Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Разница между уникальным и первичным ключом MySQL

Быстрый ответ

Первичный ключ (PK) — это уникальный идентификатор каждой записи, которое не может быть NULL. В таблице может быть только один первичный ключ, который служит для поддержания целостности данных и создания кластеризованного индекса, упорядочивающего данные для ускорения их извлечения.

Уникальный ключ (UK) обеспечивает уникальность значений и подразумевает одно значение NULL. Это позволяет определить несколько уникальных ключей в одной таблице. Индекс, созданный им, — некластеризованный, он не меняет порядок хранения данных, но способствует быстрому поиску.

Вот пример определения SQL:

SQL
Скопировать код
CREATE TABLE Сотрудники (
    IDСотрудника int NOT NULL, -- NULL не допускается, уникальность обязательна (аналог бейджика сотрудника!)
    Email varchar(255) UNIQUE, -- Допускается один "шутливый" NULL в электронной почте 🃏
    CONSTRAINT PK_Сотрудник PRIMARY KEY (IDСотрудника)
);

IDСотрудника определён как PK, обеспечивая уникальность и отсутствие значений NULL. Email — это UK, который гарантирует уникальность, но допускает возможное значение NULL.

Кинга Идем в IT: пошаговый план для смены профессии

Изучаем функционал ключей

Роль первичных и уникальных ключей

Первичный ключ — это фундамент, надёжно гарантирующий уникальность данных и поддерживающий референционную целостность в отношениях базы данных. Считайте его неизменяемым уникальным кодом, присвоенным каждой строке.

Уникальный ключ служит для поддержания уникальности с возможностью одного пустого значения, что обеспечивает более гибкую проверку уникальности, чем у PK. Он поддерживает эксклюзивность, но при этом позволяет оставить пробел для будущего заполнения записей.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Влияние ключей на индексацию

Установка первичного ключа приводит к созданию кластеризованного индекса в большинстве систем управления базами данных, логически упорядочивающего строки вокруг PK. Такая оптимизация значительно повышает скорость доступа к данным благодаря физически последовательному расположению связанных данных.

С другой стороны, уникальный ключ создаёт некластеризованный индекс, который не меняет физический порядок хранения данных, но предоставляет сортированный "указатель" для более эффективного поиска.

Процесс выбора ключа

При выборе между PK и UK, руководствуйтесь требованиями к данным. Первичные ключи имеют ключевое значение при определении связей и потоков данных, связанных с внешними ключами. Уникальные ключи могут внести дополнительные ограничения на уникальность без жесткости, свойственной PK.

Визуализация

Представьте художественную галерею с уникальными скульптурами и центральным экспонатом:

  • Уникальные скульптуры: 🗿🗽👽 (Уникальны, но в фокусе внимания они не единственные 🔦)
  • Центральный экспонат: 🏆 (Выделяется на общем фоне и единственный в своём роде 🎖)

Здесь Первичный ключ — это 🏆:

  • Отметка 🎯 Один на всю выставку (таблицу)
  • Уникальный идентификатор 📍 Обеспечивает уникальную идентификацию каждого произведения искусства

А Уникальный ключ представлен 🗿🗽👽:

  • Множественность 💠 Много уникальных произведений (без дубликатов)
  • Исключительность 🔍 Гарантирует уникальность, но не всегда является основным идентификатором

Углубленно: Когда использовать каждый ключ

Используйте первичные ключи (PK):

  • 🛠 Когда работаете с основной информацией, где пустые значения недопустимы
  • 🌐 Для установления связей между таблицами с помощью внешних ключей
  • 🔒 Чтобы обеспечить максимальную целостность и согласованность данных

Предпочитайте уникальные ключи (UK):

  • ☑ Для предотвращения дублекатов в полях, которые не являются основными идентификаторами
  • ⚖ Для тех полей, где нужна уникальность, но которые могут быть пока не заполнены (например, электронные адреса)
  • 🧩 Когда требуется высокая гибкость в структуре данных (например, допускаются несколько NULL-значений)

Полезные материалы

  1. TechOnTheNet – SQL: Первичные ключи — Руководство по определению и использованию первичных ключей в SQL.
  2. W3Schools SQL PRIMARY KEY Constraint — Основы ограничений PRIMARY KEY и их применение в SQL.
  3. Документация Oracle – Создание индексов — Подробное описание Oracle о уникальных ограничениях и индексации.
  4. SQL – Уникальное ограничение на Tutorialspoint — Хорошо доходчивое объяснение ограничения UNIQUE в SQL с примерами.
  5. Разница между первичным и уникальным ключами – GeeksforGeeks — Наглядное изложение отличий между первичными и уникальными ключами.
  6. Различие между первичным ключом и уникальным ключом – C# Corner — Альтернативное мнение, помогающее лучше осознать разницу между первичными и уникальными ключами.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Что такое первичный ключ в MySQL?
1 / 5