Первичный ключ (Primary Key) и внешний ключ (Foreign Key) - это два фундаментальных элемента реляционной базы данных, обеспечивающих целостность данных и связь между таблицами.
Что такое Primary Key (PK)?
Назначение: уникальная идентификация записи в таблице.
Главные свойства:
Значение обязательно уникальное и не может быть NULL.
В таблице может быть только один PK.
Может состоять из одного или нескольких атрибутов (составной ключ).
Пример:
В таблице "Пользователи" поле user_id - это PK, и оно уникально для каждого пользователя.
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
Что такое Foreign Key (FK)?
Назначение: устанавливает связь между таблицами, ссылаясь на первичный ключ другой таблицы.
Главные свойства:
Может содержать повторяющиеся значения, но все они должны ссылаться на существующие записи в другой таблице.
Значения NULL могут быть разрешены для этого поля.
Обеспечивает целостность данных и предотвращает "браки" (ссылки на несуществующие данные).
Пример:
В таблице "Заказы" поле user_id - это FK, ссылается на user_id из таблицы "Пользователи".
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
Зачем нужны эти ключи?
- Обеспечивают уникальность данных(PK).
- Позволяют связывать таблицы, создавая реляционную базу данных (PK + FK).
- Гарантируют целостность: нельзя добавить заказ для несуществующего пользователя или удалить пользователя, если у него есть заказы.
- Упрощают работу с большими объемами данных: связи позволяют быстро получать связанные данные через JOIN.
Первичный ключ - это уникальный идентификатор записи, всегда гарантирует её однозначное распознавание.
Внешний ключ - это ссылка на первичный ключ другой таблицы, обеспечивает связи между данными и целостность: нельзя добавить "висящие" записи, нарушающие структуру данных.
Эти механизмы - основа структурирования данных и поддержания их логической непротиворечивости в реляционных базах данных. #qa
📱 Вопросы с собесов + ответы читайте на бусти
