• 11703
  • 49
  • 5
Нравится блог?
Подписывайтесь!

Первичные ключи - что это такое и какие они должны быть

Привет всем. Этот пост касается скорей проектированю нежели админисрированию БД. А речь пойдет о Перивичных ключах.

Многие почему что не уделяют этому большого внимаение, хотя это является одной из состовляющих реляционных БД.

И так что такое первичный ключ (в дальнейшем ПК) - это поле или группа полей в таблице явно идентифицируюую запись. В таблице может быть один и только один ПК.

Так же хотел заметить что есть такое понятие как уникальный ключ(УК). Разлие м\у ПК и УК является то что УК может содержать пустые записи (null в занчениях), тем самым создавая псевдо дублирование, однако если эти поля поставить как не пустые (not null), то различие от ПК будет только в названии.

ПК бывают 2 видов естественные и суррогатные.

  • Естественные ключи это те поля которые несут информацию реального объетка, например номер удостоверения личности, паспорта, рнн и т.д.
  • Суррогатные ключи это те поля которые генерируются искусственно. И признаны заменить естественные ключи для случаев когда их просто нет, для оптимизации и по другим поводам.

Спорить о том какие ключи лучше естественные или суррогатные бессмысленно, так как у каждого есть свои достоинства и недостатки. А если подойти философски то м\у ними нет разницы, так как есстественные ключи тоже генерируются, взять тот же РНН, удост. личности. Да даже имя :), оно присваиватся вам при рождении.

Как определить какой ключ использовать?!Для этого есть несколько критериев отбора

  1. Размер ключа. Если есстесвенный ключ сликом большой. то можно его заменить суррогатным поменьше. Яркий пример когда ключ составной. Другой пример справочники. Однако у этого подхода и есть недостатки, ключи нужно сихронизировать. Большая проблема это обновление справочников.
  2. Изменение ключа. Если есстесвенный ключ часто меняется то придется каскадно менять все его значения в других таблицах, в данном случае нас спасет сурогатный ключ, менять придется только в одно месте.
  3. Ключ которого нет. Иногда требуется сгенерировать номер документа без самого документа, вот тут без суррогатныйх ключей не обойтись.
  4. Разлиные номера и коды обычно всегда являются есстественными.

Тип полей желательные для построения суррогатного ПК

  1. Char(1)
  2. Char(2) или SmallInt
  3. Char(3)
  4. Char(4) или Integer
  5. Char(5-7)
  6. Char(8) или BigInt

Елси же строка у вас переменной длинны то тогда используйте VarChar(), Старайтесь не использовать числа с плавающей точкой.

Почему именно так?! Потомучто чем менше по размеру ПК тем лучше. Если вы у вас намечатся новый справочник прикинте сколько примерно значений он может содержат если в приделах 30 то смело можно брать Char(1) и пронуберовать буквами от A-z, не больше 50000 то smallInt вполне хватит. Integer это самый "Попсовый ключ" для таблиц. BigInt практически вообще не нужен, Ни разу не видел таблицу больше 2 млд. записпей (половина емкости integer). Однако хочу заметить что это все в теории  на самом деле у разных БД есть свои ньюансы хранения данных. И разница в 2 байта практически не заметна. Однако если разница в РАЗЫ то стоит призадуматься. По моему мнению сурогатный ключ не должен быть больше 4 байт. Есстественный не болше 16 байт. Если у вас это не так значит что вы не так напроектировали.

 

 

 

 

 

 

 

Olzhas
4 мая 2009, 16:07
1382

Loading...

Комментарии

Werser
0
0
Мне кажется, сначала стоило бы рассказать о делении ПК на простые и составные, а потом уже о делении на естественные и суррогатные.
Rex
0
0
Хорошая тема, но если человек "придет со стороны" - то он может реально поплыть, вводной информации слишком мало.
Rex
0
0
Кстати, имело смысл указать примеры использования первичных ключей (связь таблиц, обращение к записи по ее ключю)
Olzhas
0
0
Да статься не для новичков. А вы что нибудь новое для себя подчеркнули?
о да,теперь узнал что праймэри кеи есть естественные и суррогатные. а то мой кругозор был ограничен простым и составным первичным ключом.
наверное нужно почитать Ливингстона "Проектирование баз данных"
Rex
0
0
Узнал про суррогатные. Думаю браться за литературу. Минут 15 курил википедию, с вашей подачи заинтересовался :)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

«До какой же еще степени унижения должен дойти народ?!»

«До какой же еще степени унижения должен дойти народ?!»

Министерство труда и соцзащиты провело через парламент очередной крайне неоднозначный закон, который может вызвать всплеск недовольства в стране.
openqazaqstan
15 нояб. 2017 / 11:17
  • 27401
  • 19
Самый большой мошенник в стране: об эффективной схеме развода «Казахтелеком»

Самый большой мошенник в стране: об эффективной схеме развода «Казахтелеком»

История о том, как Народный провайдер наваривается на своих клиентах, намерено не отключая услуги, и беря лишние деньги за ненужные и не оказываемые услуги.
ligaspravedlivosti
17 нояб. 2017 / 19:12
  • 17816
  • 61
«Почему я не хочу встречаться с мужчинами-казахами»

«Почему я не хочу встречаться с мужчинами-казахами»

Заранее отпишусь, данный пост не является попыткой оскорбить собственную нацию) Как говорится о вкусах не спорят, каждому свое.
Bonittta
16 нояб. 2017 / 14:28
  • 14509
  • 367
Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Как сообщает телеканал КТК, только за последние девять месяцев Казахстан покинули 28200 человек, из них почти пять тысяч инженеров, около 2700 экономистов и 1700 учителей.
openqazaqstan
17 нояб. 2017 / 11:00
  • 10156
  • 51
Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Подтверждаются худшие предположения, циркулирующие в соцсетях. Периодические исчезновения детей в разных регионах Казахстана объясняются не только семейными проблемами и «синими китами».
openqazaqstan
16 нояб. 2017 / 15:46
  • 7229
  • 54
О «топ-30», «топ-50» и прочих понтах можно пока забыть

О «топ-30», «топ-50» и прочих понтах можно пока забыть

В объективности выводов швейцарского банка Credit Suisse усомниться трудно – его экономические рейтинги относятся к самым авторитетным и их явно трудно упрекнуть в предвзятости
openqazaqstan
18 нояб. 2017 / 17:21
  • 5563
  • 76
«Думай как британец»: 8 вещей, которым я научилась в Великобритании

«Думай как британец»: 8 вещей, которым я научилась в Великобритании

Как два года в Великобритании изменили мою жизнь. Несколько простых вещей, которые могли бы сделать нашу жизнь лучше.
goribaldi
13 нояб. 2017 / 16:51
  • 4356
  • 28
Мой личный рейтинг женщин: от пуританки до содержанки

Мой личный рейтинг женщин: от пуританки до содержанки

Сегодня предлагаю вашему вниманию мой личный рейтинг женщин. А вот я хочу быть домохозяйкой, правда, не пахать дома, а хозяйничать.
Mysli_v_Sluh
13 нояб. 2017 / 15:00
Российским женщинам нужны казахстанские мужчины?

Российским женщинам нужны казахстанские мужчины?

Отдельные инициативы некоторых российских чиновников вызывают в Казнете приступы просто-таки гомерического ржача. Женщин в регионе – пруд пруди, а вот мужчин, с которыми они могли бы создать семьи, не хватает.
openqazaqstan
14 нояб. 2017 / 15:55
  • 2886
  • 18