Конспект «Ключи»

1️⃣ Первичный ключ (Primary Key) — это уникальный идентификатор каждой записи в таблице.

  • Не может содержать дубликатов
  • Не может быть NULL

Пример:
В таблице Students поле student_id — первичный ключ, так как он однозначно идентифицирует каждого студента. Он уникален — нет двух студентов с одинаковым ID.


2️⃣ Внешний ключ (Foreign Key) — это поле, ссылающееся на первичный ключ другой таблицы.

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

Пример:
Таблица Enrollments содержит поле student_id, которое ссылается на Students(student_id).


3️⃣ Уникальный ключ (Unique Key) — обеспечивает уникальность значений в столбце, но в отличие от первичного ключа, может быть NULL.

Пример:
В таблице Users поле email может быть уникальным — у двух пользователей не может быть одинаковых email.


4️⃣ Простой ключ (Simple Key) — ключ, состоящий только из одного поля.

Пример:
Паспорт гражданина — у каждого один уникальный номер. Поле passport_number в таблице Citizens — простой ключ.


5️⃣ Составной ключ (Composite Key) — ключ, который состоит из нескольких полей, вместе обеспечивающих уникальность записи.

Пример:
В таблице Course_Registrations составной ключ: (student_id, course_id). Если студент записался на курс, то вместе student_id + course_id создают уникальную запись.


6️⃣ Сложный ключ (Complex Key) — ключ, составленный из двух и более столбцов, вместе они уникальны.

Примечание: термины «составной» и «сложный» ключи часто используются как синонимы. В некоторых случаях под сложным ключом понимается ключ, включающий больше двух полей, но в базовой теории они равнозначны.

Пример:
Оценка зависит от студента, курса и даты экзамена — три поля вместе образуют сложный ключ.


7️⃣ Суперключ (Super Key) — любое множество столбцов, однозначно идентифицирующее запись.

  • Может включать лишние поля (не обязательно минимальный состав).

Пример:
В таблице Employees: (employee_id, email) — суперключ, хотя employee_id достаточно.
У сотрудника есть username и email. И то, и другое — уникально. Вместе — суперключ.


8️⃣ Потенциальный ключ (Candidate Key) — это претенденты на роль первичного ключа. Уникальны и без лишних полей.

  • В таблице может быть несколько потенциальных ключей.

Пример:
В таблице Members и username, и phone — уникальны. Один из них можно сделать первичным.


9️⃣ Альтернативный ключ (Alternate Key) — потенциальный ключ, который не выбран как первичный, но может использоваться для поиска и обеспечения уникальности.

Пример:
В Members id — первичный ключ, а username и phone — альтернативные ключи.


Таблица сравнения ключей:

Тип ключа УникальностьNULL допустимНесколько полей Связь с другими таблицамиКраткое объяснение
Первичный✔️✔️Главный ID строки, уникальный, не пустой
Внешний✔️✔️✔️Связь с другой таблицей (ссылается на PK)
Уникальный
✔️✔️✔️Значения не повторяются, могут быть NULL
Простой✔️❌/✔️Один столбец как ключ
Составной/Сложный✔️❌/✔️✔️Несколько полей, вместе — уникальный ключ
Суперключ✔️❌/✔️✔️Любой уникальный набор полей
Потенциальный ✔️❌/✔️✔️Минимальный уникальный набор
Альтернативный ✔️❌/✔️✔️Потенциальный ключ, который не стал PK

Использованные источники:

  1. Microsoft Learn. Типы ограничений в SQL Server (SQL Server 2008 R2)
  2. Презентация: «AB_haldus (Irina Merkulova)» — слайды о ролях и задачах администратора баз данных.
  3. Сайт: Ключ (база данных)
  4. W3Schools: SQL Keys