1. Primary Key (Первичный ключ)
Что это:
Уникальный идентификатор записи в таблице. Не может быть NULL.
Особенности:
- Один на таблицу.
- Уникальные значения.
- Не
NULL.
Пример:
| ID | Name |
|---|---|
| 1 | Alice |
| 2 | Bob |
ID — Primary Key.
2. Foreign Key (Внешний ключ)
Что это:
Поле, указывающее на Primary Key в другой таблице. Устанавливает связь между таблицами.
Особенности:
- Значение должно существовать в родительской таблице.
- Может быть
NULL(если допустимо отсутствие связи).
Пример:
Users
| UserID | Name |
|---|---|
| 1 | John |
Orders
| OrderID | UserID |
|---|---|
| 101 | 1 |
UserID в Orders — Foreign Key к Users(UserID).
3. Unique Key (Уникальный ключ)
Что это:
Ограничение, гарантирующее уникальность значений в колонке (или комбинации колонок), кроме Primary Key.
Особенности:
- Может быть несколько на таблицу.
- Может содержать
NULL(в некоторых СУБД — одинNULL).
Пример:
| ID | |
|---|---|
| 1 | test@mail.com |
| 2 | user@mail.com |
Email — Unique Key.
4. Simple Key (Простой ключ)
Что это:
Ключ, состоящий из одного поля.
Пример:
| Username | Age |
|---|---|
| alice | 23 |
| bob | 30 |
Username — Simple Key.
5. Composite Key (Композитный ключ)
Что это:
Ключ из двух и более колонок, определяющий уникальность вместе.
Пример:
| StudentID | CourseID | Grade |
|---|---|---|
| 1 | 101 | A |
| 1 | 102 | B |
(StudentID, CourseID) — Composite Key.
6. Compound Key (Составной ключ)
Что это:
Синоним Composite Key, но поля могут быть из разных типов или с разной семантикой (иногда выделяется отдельно, но часто считается тем же самым).
Пример:
Тот же пример, что и для Composite Key. Разница — в акценте на “разные по смыслу” поля.
7. Superkey (Сверхключ)
Что это:
Любая комбинация полей, однозначно идентифицирующая запись, включая лишние поля.
Особенности:
- Включает Primary Key.
- Может содержать лишние атрибуты.
Пример:
| ID | Phone | |
|---|---|---|
| 1 | a@mail.com | 123456789 |
Superkey: (ID), (ID, Email), (ID, Phone), (ID, Email, Phone) — все они уникальны.
8. Candidate Key (Кандидатный ключ)
Что это:
Минимальный набор атрибутов, который может быть Primary Key (то есть Superkey без лишних полей).
Особенности:
- Может быть несколько.
- Один из них становится Primary Key.
Пример:
| PassportNo | |
|---|---|
| AA12345 | a@mail.com |
| BB54321 | b@mail.com |
PassportNo и Email — Candidate Keys.
9. Alternate Key (Альтернативный ключ)
Что это:
Кандидатный ключ, не выбранный как Primary Key.
Пример:
Если PassportNo — Primary Key, то Email — Alternate Key.
Итоговая таблица сравнения
| Тип | Уникальность | Допустим NULL | Сколько может быть | Назначение |
|---|---|---|---|---|
| Primary Key | Да | Нет | Только один | Основной идентификатор |
| Foreign Key | Нет | Зависит от настроек | Несколько | Связь с внешней таблицей |
| Unique Key | Да | Зависит от СУБД | Несколько | Уникальные, но не первичные поля |
| Simple Key | Да | Нет | Один | Одинарное поле как ключ |
| Composite Key | Да | Нет | Один | Несколько полей как единый ключ |
| Compound Key | Да | Нет | Один | То же, с акцентом на разность полей |
| Superkey | Да | Нет | Много | Любая уникальная комбинация |
| Candidate Key | Да | Нет | Много | Возможные кандидаты на Primary Key |
| Alternate Key | Да | Нет | Много | Кандидат, не выбранный как основной |
Источники:
- W3Schools SQL Keys
- GeeksForGeeks
- TutorialsPoint
- ISO SQL standard
- ChatGPT
