Dmitri Kuzmenko пишет:
М.Королев wrote:
Ничо не понял.
Почему домен должен отражать смысл, да еще в таком узком смысле? :)
Чем плох DNAME в качестве домена для First, Middle и прочих Name'ов?
Чем плох DID в качестве домена для ID'ов (чеки в домен не включаем) ?
От чего спасает наличие разных системных доменов для одинаковых типов?
Когда LastName перестает быть равен FirstName по типу и формату?
Тупой я сёдня

Хреново вы, батенька, в моделировании упражнялись :-)

Хуже скажу, - я в игре на контрабасе вообще не упражнялся :)
Но это не мешает мне настраивать гитару. Потому что для этого _достаточно_ слуха, рук и знания приемов настройки.

FirstName <> LastName  потому что первое это ИМЯ, а второе - ФАМИЛИЯ.

Первая реакция - дать достойный ответ на столь грубый наезд :)
Но что-то зацепило, и подумал, что, возможно, здесь-то и лежит камень взаимонепонимания с угОльными краями. Так вот. Я бы принял (с натяжкой) это в качестве аргумента, если бы собирался в рантайме анализировать имя домена и выполнять какую-то обработку данных, зависящую от этого имени. Ну например, автоматически преобразовывать все поля DNAME в верхний регистр. Или интерпретировать имя домена как имя класса объекта. Но я не собираюсь этого делать! И не потому что нельзя или плохо, а просто потому, что это не входит в _мои_ приемы настройки гитары.

А Имя это не Фамилия. Я думаю, редко какому разработчику в голову придет
написать
update persons
set LAST_NAME = FIRST_NAME
where ...
или
select ...
from A, B
where A.LAST_NAME = B.FIRST_NAME,

разве не так?

И так и не так. Редко какому, потому что задача такая редко возникает. А если поставить задачу выявить процент китайцев, у которых в полном имени есть одинаковые слова, то _любой_ разработчик примерно это и напишет. Вообще, пример с именами неудачный. Т.к. даже если ты считаешь, что имя и фамилия - объекты разных классов, то все равно у них есть общий предок. И больше сходства, чем различий в формате, размере и т.д.

И точно так же ID в таблице товаров не равен ID в таблице клиентов. Потому что еще и может формироваться по разным правилам.
И вообще, извините меня, это ....., писать

Да не надо им общий домен давать, если по разным правилам! НЕ НАДО!
Вопрос опять в общем предке и степени сходства-различия.
А многоточие не понял. Говорю же, туп-с!

create domain DID NOT NULL,
а потом везде этот домен клепать, когда можно было просто написать столбцам ID INT NOT NULL.

Не верю я, что ты не понимаешь, зачем это может быть нужно.

Я может перегибаю с тоном, но я не могу понять удовольствия
от использования вот этого самого DID.

А холивар так холивар :) Кто не с нами, тот против нас!
И вообще, Дмитрий, я вычеркиваю из твоей характеристики фразу "величайший гений базостроения". и оставляю просто "великий гений базостроения". Вот так вот. Великий гений и ни копейки больше :)

Например, при моделировании структуры БД в концептуальной модели
один и тот же атрибут нельзя использовать в качестве идентификатора
более чем одной таблицы. Потому что таблица - сущность. И идентицифируется каждая по своему, пусть даже им всем десяти
влуплены генераторы типа GEN_N и они отщелкиваются с одинаковым шагом.

Шайтан! Вот он - незамутненный источник знания!
Ты бы так сразу и сказал - "хочу, чтобы схема БД удовлетворяла требованиям конкретного моделлера". Или UML. Или еще чего-нибудь умного и запрещающего тебе использовать один домен для ID'ов разных таблиц. А если серьезно, я согласен с описанным тобой ограничением, если упомянутый атрибут - это атрибут предметной области (модель-то концептуальная). Но какое отношение к этому имеет мой суррогатный ID ? Так что если эта практика повлияла на твое отношение к DID'у, - то это влияние игры на контрабасе при настройке гитары.

В общем, не надо меня разочаровывать :-) Я понимаю - нормализация
не догма, наличие FK не догма, not null в FK не догма, и так далее.
Но хоть что-то святое должно же остаться? :-)

Хорошо сказал. Присоединяюсь.

p.s. дорвались, понимаешь, до доменов...

Не говори.
И давай не будем дальше холиварить. Неблагодарное это дело. Времени тратишь вагон, а результата - никакого, потому что переубедить оппонента не удается.
А если удается, - то это уже не холивар :)

Ответить