Что такое Primary Key и Composite Key в базе данных SQL? Примеры использования.

В реляционных базах данных ключи играют ключевую роль в обеспечении целостности данных и связей между таблицами. Два важнейших типа ключей — это Primary Key (первичный ключ) и Composite Key (составной ключ).

## Primary Key (Первичный ключ)

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

Пример создания таблицы с первичным ключом:
sql
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL
);

Здесь `user_id` — первичный ключ. Каждый пользователь имеет уникальный идентификатор.

## Composite Key (Составной ключ)

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

Пример: таблица записей студентов на курсы, где один студент может записаться на несколько курсов, и один курс может иметь несколько студентов:
sql
CREATE TABLE enrollments (
student_id INT,
course_id INT,
enrollment_date DATE,
PRIMARY KEY (student_id, course_id)
);

Здесь ни `student_id`, ни `course_id` по отдельности не уникальны, но их комбинация гарантирует уникальность записи.

## Разница между Primary Key и Composite Key

| Характеристика | Primary Key | Composite Key |
|—|—|—|
| Количество столбцов | Один | Два и более |
| Уникальность | Да | Да (по комбинации) |
| NULL | Запрещён | Запрещён |
| Применение | Простые сущности | Связующие таблицы, M:N отношения |

## Когда использовать составной ключ?

Составной ключ особенно полезен в таблицах-связках (junction tables), которые реализуют отношения многие-ко-многим. Например:
— Заказы и товары (один заказ — много товаров).
— Пользователи и роли (один пользователь — несколько ролей).
— Расписание (день + время + аудитория).

Важно: при использовании составного ключа индекс создаётся по всем входящим столбцам, что влияет на производительность запросов. Порядок столбцов в составном ключе имеет значение для оптимизации.

Таким образом, Primary Key обеспечивает уникальность одной колонки, а Composite Key — уникальность комбинации нескольких колонок, что делает их незаменимыми инструментами при проектировании реляционных баз данных.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.