| | | | |
Синтетические и естественные ключи. |
Добрый день.
Может кто поможет мне определиться в том, какие ключи лучше
использовать в качестве первичных - синтетические или
естественные. Я прочитал несколько статей на эту тему, но не
уверен, что пришел к определенным выводам. С одной стороны
преимущество синтетического ключа кажется неоспоримым исходя из
того постулата, что любой объект реального мира подвержен
изменениям, иногда кардинальным. Очень многое из того, что
кажется незыблемым, может меняться и довольно быстро. Трудно
придумать действительно уникальный естественный ключ, например,
возьмем таблицу рабочих предприятия. Что взять в качестве
первичного ключа? Не буду говорить банальности о смене ФИО,
пола, паспорта и т.п. Взять за основу псевдо естественное поле
- табельный номер (ведь для того его и придумали)? А теперь
представьте ситуацию - предприятие работает долго, имеет
обширные архивы на CD-ROM, база эксплуатируется практически
непрерывно (вполне реальные параметры для серьезных баз данных).
Руководство отделов кадров решило, что теперь табельный номер
должен быть не числовой, а текстовой и нести в себе некую доп.
информацию (причем это с точки зрения программиста ситуация
весьма нестандартная, а с точки зрения отдела кадров проста и
менять свои взгляды на формат табельного номера оно может раз в
неделю, кстати, на период становления нового стандарта так оно и
будет). Что делать? Ну, в общем-то "что" понятно, но, боюсь, что
будет плохо и базе и программисту.
С другой стороны в примере с тем же табельным номером абсолютно
ясно, что он должен оставаться уникальным на протяжении всей
жизни базы и появление искусственного ключа мало того, что
нарушает правило нормализации, так еще и противоречит
фундаментальному философскому принципу Оккама - "сущности не
следует умножать без необходимости" ("Entities should not be
multiplied unnecessarily", William of Ockham). Я уж не говорю,
что в справочниках, как правило, тоже есть естественные
натуральные ключи, а их значения вставляются практически во все
таблицы. В таких случаях кажется неестественным организовывать
сложнейшие соединения таблиц по 10-20. Кроме того, чем больше
синтетических ключей в таблице, тем меньше она несет информации
сама по себе и тем больше чувствительна к потерям и ошибкам в
связанных таблицах.
Я постарался объяснить, почему ответ - "используй синтетические
ключи там, где нельзя использовать естественные", не кажется мне
разумным. Т.е. это тот случай, когда желательно все же не
действовать по принципу "и ты прав и ты тоже прав". Sergey
Всего в теме 290 сообщений
Добавить свое сообщение
Отслеживать это обсуждение
№ 250 02-10-2009 02:16 | |
№ 249 02-10-2009 00:47 | |
Ответ на »сообщение 238« (Как слышно? Приём!)
___________________________
Как говорилось в анекдоте про три стакана водки на заводе: "так ведь работаю же!" Замечательно. Ну так давайте говорить не о достоинствах естесственных ключей, а о том, что да, мы раздолбаи организовать единую систему учета не можем и не хотим, по сему пусть каждый лепит как хочет, а мы тут в центральном офисе как-нибудь всё сведем, куда-нибудь Был у меня опыт работы в подобных организациях. Иных уж нет, а те далече.
№ 248 02-10-2009 00:11 | |
Ответ на »сообщение 247« (Как слышно? Приём!)
___________________________
>>> Кто-то недавно на БП сморозил, что путь развития систем - упрощение
Почему "сморозил", если это так. Для точности формулировки, правда, надо добавить, что упрощение на соответствующем качественном уровне.
Возьмите любую систему (не обязательно информационную). При переходе на качестенно новый уровень система становится очень сложной. В длальнейшем она совершенствуется путем упрощения. И это не следствие игнорирование исследования предметной области, а как раз наоборот: обобщение результатов исследования предметных областей. Практика показала, что очень (очень!) велик процент ситуаций, когда "предметные" атрибуты сущностей со временем изменяются. Даже, если изначально казалось, что они меняться не могут. Результатом осмысления стало использование дополнительных атрибутов сущностей, предназанченное для идентификации сущности.
Кстати, так было и в докомпьютерную эпоху. Тот же самый табельный номер, по сути, представляет собой искусственный первичный ключ докомпьютерных времен. Ну, нет у человека простого уникального идентификатора, который не мсог бы со временем измениться.
>>> Соответственно, разработке сетевых БД пришёл кирдык
А вот этот вывод я не понял. Тем более, что он противорречит реальности: сетевые БД сейчас бурно развиваются.
№ 247 01-10-2009 23:20 | |
Ответ на »сообщение 244« (Geo)
___________________________
>>> Я не силен в азербайджанском
А зачем тогда придумали Unicode?
ИК завоевали признание и установили монополизм,
что привело к ещё большему их фактическому преимуществу.
Теперь к генетическим преимуществам ИК добавилось преимущество разработанности.
Хотя по большому счёту - это упрощенчество.
Кто-то недавно на БП сморозил, что путь развития систем - упрощение.
Тотальное торжество ИК - тому пример.
Признаться, ЕК действительно воспринимаются как нечто рудиментарное.
Соответственно, разработке сетевых БД пришёл кирдык.
№ 246 01-10-2009 23:11 | |
Ответ на »сообщение 244« (Geo)
___________________________
>>> Вы уверены, что каждый заказчик согласиться купить систему, в которой нельзя будет вводить маленькие буквы?
Вы путаете интерфейс и внутреннюю обработку.
UpperCase перед проверкой а не для ввода.
№ 245 01-10-2009 17:01 | |
Бурная дискуссия в лучших традициях БП. Но хоть убей не пойму, какое она имеет отношение к преимуществу того или иного типа ключей :D
№ 244 01-10-2009 16:59 | |
Ответ на »сообщение 242« (Как слышно? Приём!)
___________________________
>>> Повторюсь: смотри паспорт
Я не силен в азербайджанском и не могу воспроизвести, что будет написано в паспорте. Вы уверены, что Вам это сильно поможет?
>>> CapsLock не проблема с UpperCase
Это вариант, который как раз часто используется. Но только это организационные меры, а не технические. Вы уверены, что каждый заказчик согласиться купить систему, в которой нельзя будет вводить маленькие буквы?
>>> Автоматизация идеального порядка ещё более бессмысленна
А посему... "Господи, дай мне сил изменить то, что могу изменить, смирения принять то, что изменить не могу, и мудрости -- отличить одно от другого"
№ 243 01-10-2009 14:45 | |
Ответ на »сообщение 241« (Fisher)
___________________________
>>> Напротив, оно позволит тратить время впустую гораздо эффективнее.
Не только эффективнее, но и прибыльнее.
Да и комфортабельнее, чем таскать кирпичи, например.
№ 242 01-10-2009 14:43 | |
Ответ на »сообщение 239« (Geo)
___________________________
>>> Рамиз Мамед Наби Оглы
Повторюсь: смотри паспорт.
CapsLock не проблема с UpperCase.
>>> Автоматизация хаоса может привести только к возникновению автоматизированного хаоса.
Автоматизация идеального порядка ещё более бессмысленна.
Я вообще-то думаю, что автоматизация имеет целью уменьшение хаоса - это называется оптимизация.
№ 241 01-10-2009 13:16 | |
>>> Автоматизация хаоса может привести только к возникновению автоматизированного хаоса.
Но это вовсе не означает, что данное мероприятие невозможно. Напротив, оно позволит тратить время впустую гораздо эффективнее.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|
|