|
|
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
softwarerВы когда встречаете знакомого как его идентифицируете, по номеру паспорта, горящему на лбу? Или таки по некоей сложной комбинации признаков, оцениваемой непростым алгоритмом и дающей в результате "он" / "нет, точно он" / "не он" / "вроде он" / "похож, но не он" / "вроде помню, но не помню кто" / итп?Вы выбираете неправильные объекты для идентификации по номеру паспорта. Номер паспорта - это нормальный естественный ключ для сущности "паспорт", а не для человека. И непонятно, на что вы так лаконично возразили выше ("Так ближе к истине"). Эту вашу фразу можно понять так, что в мире ни у одного реального объекта с каким то признаком, который можно было бы использовать для однозначной идентификации этого объекта. Это какой то максимализм, типа "мир существует только в моём сознании" :-) Я же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться. Человека, разумеется, можно точно идентифицировать по номеру паспорта, но как ПК это номер выбирать неправильно, потому как поспортов у него может быть много. На лбу номер не горит, но паспорт у человека есть/когда то был, этого достаточно, остальное дело техники, пусть даже это небыстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 13:20 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
sphinx_mvalexeyvgВ тех же примерах с почтовым индексом именно он, а не суррогатный ключ, будет идентифицировать объект реального мира - почтовый индекс, поскольку на конверте пишут его, а не внутренний ключ в БД. Так почему бы в сущности "почтовый индекс" не сделать его естественным ключём, находить её, а потом уже находить привязанные к ней географические зоны, почтовые отделения, маршруты сортировки и прочее? Обращаю внимание, что в связи с тем, что тот самый почтовый индекс не является константой в естественном мире, то выбрав его в качестве ключа, а тем более первичного, использующегося в связях с другими таблицами, Вы попадаете в нарушение ссылочной целостности. Что произойдет со ссылками в "таблице маршрутизации почтовых сообщений", когда изменения индекса начинают указывать на другую географическую зону? А когда из списка почтовых индексов необходимо удалить индекс? Предположим, что на почтовый индекс есть хотя бы 1 ссылка в таблице адресов контрагентов...Эххх, что не является константой? Ключ 123456 для таблицы "Почтовый индекс", запись 123456 может меняться? Один индекс может поменяться на другой, сам индекс, а не привязка идекса к географической зоне? Я уже несколько раз говорил - почтовый индекс не может идентифицировать географический объект, или, например, почтовое отделение. Я же это сказал в первом посте, и потом повторил пару раз. А вы мне в каждом ответе доказываете то же самое практически дословно :-) sphinx_mvПредположим, что на почтовый индекс есть хотя бы 1 ссылка в таблице адресов контрагентов...Ну такие ссылки же реально есть в реальных системах. Мало где при использовании адресов не используют почтовый индекс. Вот этим и хороши естественные ключи - это некий суррогатный ключ на уровне (в данном случае) государства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 13:32 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
softwarerВопрос ключей не является вопросом РМД. В любой модели данных у нас будет необходимость в идентификации объектов, с которыми мы работаем. Я имел в виду, что и целое может не подойти, а и тем более часть. Ключи и идентификация не совсем одно и то же. В РМД - это только уникальность. Они там позволяют, например, навязыват функциональные зависимости атрибутов схеме. Поэтому, возможно, в других МД ключи и не вседа есть. softwarerВся суть аргументации за них в том, что в некоторых ситуациях, пока гром не грянет, они справляются не хуже. Возможно, это предположение нуждается в дополнительных подтверждениях. Поскольку все таки МД про информацию, а суррогаты в МД, но не про информацию. Это как бы все еще может вызывать обеспокоенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 13:51 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
alexeyvgНомер паспорта - это нормальный естественный ключ для сущности "паспорт", а не для человека. Ага :) Только даже он не годится для использования. Вот у Вас в базе записано, что паспорт XII-МЮ №323100 принадлежит Марии Ивановне Глотиковой, а перед Вами стоит и показывает паспорт с таким номером Семён Михайлович Безродный. Что будете делать? Это, разумеется, после того как справитесь с паспортами X11-МЮ и 12-МЮ (варианты, как можете догадаться, взяты не с потолка, а из реальных данных, и дааалеко не все встречающиеся). alexeyvgИ непонятно, на что вы так лаконично возразили выше ("Так ближе к истине"). На столь же лаконичную мысль о том, что [доступный для применения в БД и удобный] естественный ключ идентифицирует объект реального мира [вне лабораторных условий]. alexeyvgЯ же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться. Неизменность - это не единственное необходимое условие. Я не сторонник абсолютной унификации, но реально естественные ключи можно использовать так редко (и не получая с того никаких выгод), что серьёзно обсуждать это мне представляется нелепым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 15:25 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
alexeyvgЯ же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться. . На самом деле, от ключа требуется только уникальность. Неизменность это в общем случае не обязательноет требование. Часто, траблы с изменениями связаны именно с ОЦ внешний ключ. Но поддержка каскадных обновлений подтверждает, что изменение таких ключей нормальное дело. Однако, скорее всего, выбор между естесвенными или суррогатными желателен для всей БД из-за единообразия стиля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 17:01 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Напомню одно из фундаментальных положений теории баз данных. Впервые я его обнаружил в статье скандинавского ученого, скорее, философа, так как в то время сама концепция БД была популярной, и все вносили посильный вклад). В БД должно быть нечто, что отражало бы факт существования объекта, независимо от нашего знания о свойствах этого объекта. Другими словами, это нечто не является свойством объекта. Это положение, как и другие фундаментальные положения теории БД (такие как, единственность концептуальной модели, результат запроса - это часть БД со всей присущей БД семантикой, и т.д.), не выполняются, к сожалению, в "реляционных" СУБД (даже после приделывания объектных надстроек). Поэтому и возникают эти бесконечные споры "о ключах") Напомню также, что раз "это нечто" объекта не является свойством объекта, то "эти нечты" других объектов, тем более, не являются свойствами данного объекта. То есть, внешние ключи так же безнадежны, как и первичные)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 16:39 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Бредятина, угу объекты (существительные) отдельно (Бредятина) классификаторы (ху из ху семантика) отдельно (Умный) история классификации объекта отдельно (Поумнел года 4 назад от заданной даты) семантика межобъектных отношений (глаголы) отдельно (Работает(Бредятина Черт и где с окладом = мизер)) Вот тут проблема - "Бредятина + Черт и где" только совместно имеют свойство "оклад = мизер" Значит "Бредятина + Черт и где" - Объект Но почему то объекты типа "Бредятина + Черт и где" не могут создать семантику высшего (ну хотя бы на один уровень) ранга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 18:08 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
ViPRos, Я и сам не ожидал, что такая очевидная мысль скандинавского философа (об идентификаторах) не будет пониматься даже через 40 (?) лет даже образованными людьми)) Что за "черти" и "семантика"?) Вот в соседней теме я провокационно обратил внимание на "серьезную ошибку" начинающего проектировщика: он рассматривает Фамилию, как свойство Клиента, тогда как на самом деле Фамилия - самостоятельная сущность со своими свойствами)) Следуя этой логике у сущности не останется ничего, кроме идентификатора... И, кстати, о классификаторах (раз уж Вы начали непонятно к чему об этом говорить): когда мы приписываем сущности фамилию Иванов, мы просто относим сущность к классу сущностей, имеющих фамилию Иванов. Другими словами - любое свойство является классификатором)) Но Вы-то о чем начали говорить в связи с "проблемой ключей" - я так и не понял. То есть, так и не поумнел)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 20:26 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Бредятина, ты чувствуешь разницу между Свойствами-Классификаторами и просто Свойствами? Почему "Умный" лассификатор, а "Оклад" - нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 22:55 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
ViPRosБредятина, ты чувствуешь разницу между Свойствами-Классификаторами и просто Свойствами? Почему "Умный" лассификатор, а "Оклад" - нет? Я невероятно чувствительный, когда речь идет о БД. Указывая оклад 100 руб., Вы относите человека к классу сотрудников, имеющих оклад 100 руб. Следовательно, оклад - классификатор))) (Не поддавайтесь на провокации, конечно, но и не игнорируйте). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 23:51 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Бредятина, т.е. ты чувствуешь метрику, шкалу, счетность и т.д. я так и думал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2012, 23:58 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
ViPRosБредятина, т.е. ты чувствуешь метрику, шкалу, счетность и т.д. я так и думал Вот и чудненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2012, 00:00 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Бредятина, а как на счет вычислимости ВСЕХ Объектов? (ну так как классифиакторы ты наши :), а кроме ни мы ничего не знаем) т.е. А ЕСТЬ ЛИ ОБЪЕКТ??? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2012, 00:04 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
ViPRosБредятина, а как на счет вычислимости ВСЕХ Объектов? (ну так как классифиакторы ты наши :), а кроме ни мы ничего не знаем) т.е. А ЕСТЬ ЛИ ОБЪЕКТ??? :) Ага. Причем, независимо от того, что мы о нем думаем)) Закончился свободный день((( Всем удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2012, 00:07 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
Бредятина, материалист по убеждению, блин сам же доказал, что нет никаких объектов, а есть токо идея о них и ситема идентификации идей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2012, 00:11 |
|
||
|
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
|
|||
|---|---|---|---|
|
#18+
БредятинаУказывая оклад 100 руб., Вы относите человека к классу сотрудников, имеющих оклад 100 руб. Следовательно, оклад - классификатор))) Здесь ошибочка. Класс сотрудников, имеющих оклад 100 руб, должен существовать. Попробуйте поменять на 101 (а такого класса еще нет). Чистая схоластика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2012, 10:28 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37738582&tid=1541744]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
144ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 454ms |

| 0 / 0 |
