Ключи в реляционных базах данных¶
Ключи обеспечивают идентификацию, связь и целостность данных в таблицах.
Первичный ключ (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?¶
-
Обеспечивают уникальность и непротиворечивость данных.
-
Предотвращают дублирование и избыточность.
-
Связывают таблицы — основа нормализации.
-
Позволяют СУБД оптимизировать запросы и обеспечивать безопасность данных при обновлении и удалении.