[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bazy-dannykh-chto-takoe-pervichnyy-klyuch-i-kakovy-kriterii-ego-vybora":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1132,"chto-takoe-pervichnyy-klyuch-i-kakovy-kriterii-ego-vybora",35,"bazy-dannykh","Базы данных","🗄️","Что такое первичный ключ и каковы критерии его выбора?","Первичный ключ (primary key) — один из потенциальных ключей отношения, выбранный в качестве основного идентификатора записей.\n\n### Критерии выбора первичного ключа\n\n| Критерий | Пояснение |\n|----------|-----------|\n| Минимальный размер | Меньше физического хранения — быстрее индексы и JOIN |\n| Минимальное количество атрибутов | Простой ключ предпочтительнее составного |\n| Стабильность во времени | Значение не должно меняться (иначе каскадно обновятся FK) |\n| Гарантия уникальности | Уникальность не должна утрачиваться со временем |\n\n### Естественный vs суррогатный ключ\n\n| Характеристика | Естественный ключ | Суррогатный ключ |\n|---------------|-------------------|------------------|\n| Источник | Бизнес-данные (ИНН, email) | Генерируется системой (AUTO_INCREMENT, UUID) |\n| Читаемость | Имеет бизнес-смысл | Не несёт смысла |\n| Стабильность | Может измениться (email) | Не меняется |\n| Размер | Может быть большим | Обычно компактный (BIGINT) |\n\nНа практике в большинстве случаев используется суррогатный ключ (BIGINT с автоинкрементом или UUID), потому что он компактен, стабилен и не зависит от бизнес-логики.\n\n```sql\nCREATE TABLE users (\n    id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,\n    email VARCHAR(255) UNIQUE NOT NULL,  -- альтернативный ключ\n    name VARCHAR(100) NOT NULL\n);\n```\n\n> **На собеседовании:** интервьюер часто спрашивает «почему не использовать email как PK?». Ответ: email может измениться, он длинный (увеличивает размер индексов и FK), и его сравнение медленнее, чем сравнение BIGINT. Хороший кандидат упомянет компромисс UUID vs BIGINT.","","junior",[15,16],"databases","основы",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Что такое первичный ключ и критерии его выбора — Gymterview","Первичный ключ (primary key): определение, критерии выбора (минимальный размер, стабильность, уникальность). Естественный vs суррогатный ключ, UUID vs BIGINT.","Первичный ключ: определение и критерии выбора — Gymterview","Что такое первичный ключ, критерии выбора, естественный vs суррогатный ключ, UUID vs BIGINT.",[25,26,27,28,29,30,31,32,33],"первичный ключ","primary key","суррогатный ключ","естественный ключ","UUID","BIGINT","AUTO_INCREMENT","SQL","Java собеседование","Первичный ключ (primary key) — один из потенциальных ключей, выбранный как основной идентификатор записей. Критерии выбора: минимальный размер, минимальное число атрибутов, стабильность во времени, гарантия уникальности. На практике чаще используется суррогатный ключ (BIGINT с автоинкрементом или UUID).",true]