Какие типы ключей используются в реляционных базах данных и в чем их назначение?

Ответ

В реляционных СУБД для организации данных и обеспечения их целостности используются несколько типов ключей:


  • Primary Key (PK, Первичный ключ) — уникальный идентификатор записи в таблице. Он не может содержать NULL и должен быть абсолютно уникальным. Используется для прямой идентификации и быстрого доступа к строке.



  • Foreign Key (FK, Внешний ключ) — ключ в одной таблице, который ссылается на PRIMARY KEY в другой. Он обеспечивает ссылочную целостность между таблицами, предотвращая создание записей, ссылающихся на несуществующие данные.



  • Unique Key (Уникальный ключ) — гарантирует, что все значения в столбце (или наборе столбцов) уникальны. В отличие от PK, может содержать одно значение NULL (в большинстве СУБД). Часто используется для полей, которые должны быть уникальными, но не являются основным идентификатором (например, email пользователя).



  • Composite Key (Составной ключ) — первичный ключ, состоящий из двух или более столбцов. Используется, когда уникальность записи можно определить только комбинацией значений (например, в связующей таблице user_roles ключом будет пара user_id и role_id).



  • Candidate Key (Потенциальный ключ) — любой столбец или набор столбцов, который может служить первичным ключом (т.е. он уникален и не NULL). Таблица может иметь несколько потенциальных ключей, один из которых выбирается как первичный.


Пример в SQL:

-- Таблица команд
CREATE TABLE teams (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL UNIQUE
);

-- Таблица пользователей с внешним и уникальным ключами
CREATE TABLE users (
    id INT PRIMARY KEY,
    email VARCHAR(255) UNIQUE NOT NULL, -- Уникальный ключ
    team_id INT,
    FOREIGN KEY (team_id) REFERENCES teams(id) -- Внешний ключ
);