Перейти к содержанию

Ключи в реляционных базах данных

Ключи обеспечивают идентификацию, связь и целостность данных в таблицах.


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

Первичный ключ — это один или несколько столбцов, которые уникально идентифицируют каждую строку в таблице.

Свойства:

  • Уникальность — каждое значение уникально.

  • Не NULL — ни одно значение не может быть пустым.

  • Один на таблицу — только один первичный ключ.

  • Составной — может включать несколько столбцов.

  • Обеспечивает целостность — гарантирует, что в таблице нет дублирующих записей.

  • Исключает избыточность — нет повторяющихся строк с одинаковым смыслом.

  • Оптимизация запросов — СУБД может использовать PK для быстрого поиска.

Пример:

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE,
    name VARCHAR(100)
);

Внешний ключ (Foreign Key, FK)

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

Используется для создания связей между таблицами.

Свойства:

  • Ссылается на PK (или UNIQUE) в другой таблице.

  • Обеспечивает ссылочную целостность — нельзя вставить значение, которого нет в целевой таблице.

  • Может содержать NULL, если связь необязательна.

  • Допускает повторения — один внешний ключ может ссылаться на одну и ту же запись.

  • Поддерживает каскадные действия (ON DELETE, ON UPDATE) для автоматического управления связанными данными.

Пример:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
);

Зачем нужны PK и FK?

  • Обеспечивают уникальность и непротиворечивость данных.

  • Предотвращают дублирование и избыточность.

  • Связывают таблицы — основа нормализации.

  • Позволяют СУБД оптимизировать запросы и обеспечивать безопасность данных при обновлении и удалении.