• 10894
  • 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
1304

Загрузка...

Комментарии

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

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

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

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

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

Тебе не повезло – ты родился мужчиной в Казахстане. Пародия по мотивам «Письмо дочери»

Тебе не повезло – ты родился мужчиной в Казахстане. Пародия по мотивам «Письмо дочери»

Весь день сверкал в фейсбуке пост Дамира Баймолдина о нелегкой доле казахстанских женщин. Ну, и я решил внести свою лепту в душетрепещущую тему.
distemper2011
19 сент. 2016 / 11:18
  • 11563
  • 24
Я –живой пример того, что для начала собственного дела не нужны большие деньги

Я –живой пример того, что для начала собственного дела не нужны большие деньги

Сегодня утром ко мне позвонила тетя и сообщила, что хочет открыть свое дело, но не знает с чего начать и не уверена, хватит ли ей первоначального капитала. Вы не представляете, как она удивилась, когд
toskanbayev_a
21 сент. 2016 / 16:45
  • 9202
  • 24
Тохтар Тулешов: Чистосердечное признание. Кто слил в сеть?

Тохтар Тулешов: Чистосердечное признание. Кто слил в сеть?

Ведется расследование в отношении лиц, причастных к распространению снимков чистосердечного признания Тохтара Тулешова в сети...
TangoInHarlem
19 сент. 2016 / 17:25
  • 8205
  • 11
Кызылорда: перезагрузка, или что изменилось за последние несколько лет

Кызылорда: перезагрузка, или что изменилось за последние несколько лет

В преддверии Дня города мы решили вспомнить, как росла и развивалась наша родная Кызылорда в последние годы. Хотим поделиться своей любовью к родному городу с читателями Юви в этой фотоподборке ...
socium_kzo
22 сент. 2016 / 10:09
  • 6183
  • 6
Сватовство в Казахстане или Заберите скорее мою дочь к себе

Сватовство в Казахстане или Заберите скорее мою дочь к себе

Всю мою сознательную жизнь мне приходилось ходить в гости. В гостях неплохо, не спорю. Бесплатная еда и напитки. В особо продвинутых семьях ещё предоставляются услуги Free Wi-Fi. В особо весёлых...
almatinec_92
23 сент. 2016 / 9:33
25 годовщину независимости от колониального гнета Киргизия встретила вот так...

25 годовщину независимости от колониального гнета Киргизия встретила вот так...

Трехлетний Исхак стал звездой киргизских СМИ и соцсетей на прошлой неделе. Его фотография, спящего на улице среди окурков на картонке, вызвала шок в обществе. В принципе это подобное фото можно...
Shpak
20 сент. 2016 / 15:52
Apple – это уже прошлое. XIAOMI тихо стал настоящим и будущим

Apple – это уже прошлое. XIAOMI тихо стал настоящим и будущим

Безусловно мы все относимся с большим уважением с Стив Джобсу. Но его уже больше 5 лет нет с нами. Бессмысленно продолжать фанатеть от продукции Apple...
GALAN
22 сент. 2016 / 23:19
  • 3095
  • 12
Образование в Японии. Вы только не подумайте, что они тут воспитывают спартанцев

Образование в Японии. Вы только не подумайте, что они тут воспитывают спартанцев

Моё чисто дилетантское сравнение системы образования между скандинавскими странами (а если конкретней, то Финляндия) и Японии. Безусловно, финское начальное образование держит первенство...
Abdygali
18 сент. 2016 / 14:22
  • 3011
  • 13
В октябре 2016 года состоится VII съезд судей Казахстана

В октябре 2016 года состоится VII съезд судей Казахстана

Проведение съездов судей позволяет принимать стратегические решения по вопросам развития судебной системы и способствует укреплению принципов независимости судейского сообщества.
elawkz
23 сент. 2016 / 13:45
  • 2417
  • 0