TGViewer
LEFT JOIN LEFT JOIN @leftjoin · 41.9K subscribers
Post #1644 14.7K
А вы используете естественные ключи?
Использование естественных ключей кажется вполне логичным решением. Особенно, если у вас есть простой естественный ключ — что-то вроде ИНН или серийного номера, который в теории должен быть уникальным для каждой сущности в таблице.

💬 Если простого ключа нет, почти всегда можно придумать составной. Например, здесь автор приводит в пример студенческий проект — базу данных для сайта со списком 50 лучших ресторанов, где в качестве ключа предложили использовать сочетание названия заведения и города. Уже можно догадаться, какие минусы есть у такого подхода — чем больше город, тем больше вероятность, что там заведутся два ресторана с одинаковыми названиями. Но для небольшого набора данных, он вполне применим.

Кроме вопросов к уникальности, которые почти неизбежно возникнут при работе с большим датасетом, есть и другие сложности.
🔵 Многие данные, которые можно было использовать в качестве первичного ключа, могут со временем меняться — например, телефон, email, номер и серия паспорта. В той же статье автор приводит пример, когда во время техосмотра выяснилось, что у его машины неправильный VIN. Проблема решилась тем, что механик просто исправил его в системе. То есть даже такие, казалось бы, неизменяемые вещи, как VIN или серийный номер могут в какой-то момент измениться.
🔵Никто не застрахован от ошибок и опечаток, и чем больше датасет, тем выше вероятность, что кто-то неправильно запишет номер или опечатается в собственном имени. Будет неприятно, если такая ошибка закрадется в поле, которое используется как первичный ключ.
🔵 Искусственный (суррогатный) ключ помогает избежать этих проблем, а еще в теории — упростить запросы и внесения изменений в таблицы.

Хотя у них тоже есть минусы — неинформативность или сам факт создания каких-то дополнительных сущностей в таблице вместо того, что навести в данных порядок и обеспечить их точность, актуальность и уникальность.

А какой вариант вам ближе? 👀
  • ❤ 12
  • 👍 11
More from @leftjoin
  1. Sep 30, 2026Что было на OpenAI Dev Day? Вообще-то много чего — больше 20 релизов и анонсов. Пройдемся…
  2. Sep 28, 2026В одной ячейке Excel можно будет хранить массивы значений Наконец-то важные новости и не п…
  3. Sep 25, 2026Новый ИИ-бенчмарк подвезли Тем, как ИИ пишет код, взламывает сайты или решает математическ…
  4. Sep 23, 2026Как грамотно делегировать задачи ИИ Внедрение искусственного интеллекта и агентов в работу…
  5. Sep 18, 2026Что делать с тепловыми картами и хороплетами? Все виды графиков и чартов по-своему хороши…
  6. Sep 16, 20263D-карты СУБД Отвлечемся от новостей про ИИ и скандалов вокруг OpenAI и посмотрим, что вну…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →