Ответ
Primary Key (Первичный ключ, PK) — это ограничение (constraint), которое однозначно идентифицирует каждую запись (строку) в таблице реляционной базы данных.
Ключевые свойства первичного ключа:
- Уникальность: В таблице не может быть двух строк с одинаковым значением первичного ключа.
- Непустота (NOT NULL): Поле первичного ключа не может содержать значение
NULL. - Только один на таблицу: У таблицы может быть только один первичный ключ (хотя он может состоять из нескольких столбцов — составной ключ).
Зачем он нужен и как я его использовал:
- Гарантия целостности данных: База данных не позволит вставить дубликат или
NULLв PK. Это защищает от логических ошибок в данных. - Связи между таблицами (FOREIGN KEY): PK является «якорем» для внешних ключей из других таблиц, что позволяет строить связи.
- Кластеризованные индексы: В большинстве СУБД (SQL Server, MySQL/InnoDB) PK по умолчанию создаёт кластеризованный индекс — данные в таблице физически упорядочены по этому ключу, что ускоряет поиск и range-запросы.
Примеры создания:
-- Простой первичный ключ на один столбец (часто автоинкрементный)
CREATE TABLE Users (
user_id INT PRIMARY KEY IDENTITY(1,1), -- SQL Server
-- user_id SERIAL PRIMARY KEY, -- PostgreSQL
-- user_id INT AUTO_INCREMENT PRIMARY KEY, -- MySQL
email VARCHAR(255) NOT NULL UNIQUE
);
-- Составной первичный ключ (Composite Primary Key)
CREATE TABLE OrderItems (
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT,
PRIMARY KEY (order_id, product_id) -- Комбинация этих двух полей уникальна
);
-- Добавление PK к существующей таблице
ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY (employee_id);
Важно: Выбор хорошего PK (суррогатный vs. естественный) — это важное архитектурное решение, влияющее на производительность и дизайн схемы.