• 11415
  • 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
1368

Загрузка...
Loading...

Комментарии

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

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

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

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

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

Прогноз эксперта: в Казахстане будут жить 5 миллионов китайцев

Прогноз эксперта: в Казахстане будут жить 5 миллионов китайцев

В ближайшие годы в Центральной Азии будут проживать восемь миллионов китайцев, считает заведующий отделением востоковедения национального исследовательского университета высшей школы экономики.
kurmanovainur
23 июня 2017 / 11:23
  • 37568
  • 18
Они сделали это! Kaspi Bank презентовал свое мобильное приложение

Они сделали это! Kaspi Bank презентовал свое мобильное приложение

Изучив ошибки предшественников и собрав воедино новейшие идеи онлайн-банкинга, Kaspi Bank наконец выпустил... свое мобильное приложение!
niyazov
20 июня 2017 / 15:05
  • 8408
  • 5
Кайрат Келимбетов об азербайджанской инвестиции: «Вернется и «тело», и проценты»!

Кайрат Келимбетов об азербайджанской инвестиции: «Вернется и «тело», и проценты»!

Мы записали уникальное интервью с Кайратом Келимбетовым. Предлагаю вам посмотреть первую часть, где мы постарались по возможности поставить все точки на «I» именно по Азербайджанскому вопросу.
Zhumanova
19 июня 2017 / 12:00
  • 6049
  • 7
Почему мы должны быть благодарны журналисту Джеймсу Палмеру за критику ЭКСПО

Почему мы должны быть благодарны журналисту Джеймсу Палмеру за критику ЭКСПО

Как одним критичным постом зарубежному журналисту Джеймсу Палмеру удалось вскрыть сразу несколько гнойников казахстанского общества.
anotherblogger
21 июня 2017 / 0:39
  • 6156
  • 63
Долговое рабство: почему казахстанцы берут кредиты под 1330%

Долговое рабство: почему казахстанцы берут кредиты под 1330%

Эти кабальные займы никакой пользы для экономики не несут, при этом ухудшают финансовые возможности населения, пополняют ряды новых неплательщиков, тем самым создавая социальную напряженность в...
Armanjan
18 июня 2017 / 15:43
  • 3997
  • 28
В Казахстане заблокировали сайт, раскритиковавший EXPO в «захолустной» Астане

В Казахстане заблокировали сайт, раскритиковавший EXPO в «захолустной» Астане

Все помнят Медузу и ЖЖ. Теперь в этот "особенный" список попал сайт Foreign policy. Предполагается, что причиной блокировки стала нелицеприятная заметка Джеймса Палмера об EXPO в Астане.
Seattle
19 июня 2017 / 15:40
В каких случаях у вас могут изъять удостоверение личности?

В каких случаях у вас могут изъять удостоверение личности?

Недавно один знакомый задал вопрос: «Я сейчас выступаю как свидетель по одному делу. У меня забрали удостоверение личности (УЛ) в РУВД и не вернули обратно. Так можно?». Я сразу задалась вопросом...
asselsabekova
21 июня 2017 / 10:17
  • 2680
  • 10
Инструкции по сопроводительному письму и собеседованию, которые подойдут всем

Инструкции по сопроводительному письму и собеседованию, которые подойдут всем

Наткнулась на статью Ассоциации юристов Новой Зеландии, в которой они дают советы выпускникам юрфака по поиску работы. Статья меня поразила, поскольку там описано все до мелочей, а их советы подойдут абсолютно всем.
asselsabekova
20 июня 2017 / 16:10
  • 2389
  • 6
На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

Очень живописная и бюджетная поездка вдоль всего берега по Иссык-Кулю! Мы, две обаятельные девушки, поехали вдвоем, подготовленные к совершенно автономной жизни в палатке, и ни разу ничего не...
yelenasergiyenko
22 июня 2017 / 13:20
  • 2184
  • 14