Ответ
Связи (отношения) между таблицами — фундаментальный принцип реляционных БД, обеспечивающий целостность данных и устранение избыточности.
Основные цели:
- Нормализация данных: Исключение дублирования информации (например, хранение имени пользователя только в таблице
users, а не в каждой записи заказа). - Обеспечение ссылочной целостности (Referential Integrity): Гарантия, что внешние ключи ссылаются на существующие записи. Нельзя создать заказ для несуществующего пользователя.
- Упрощение сложных запросов: Возможность объединения данных из нескольких таблиц с помощью оператора
JOIN.
Пример схемы "один-ко-многим" (пользователь → заказы):
-- Таблица-родитель
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL
);
-- Таблица-потомок с внешним ключом
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT NOT NULL,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE -- Опционально: автоматическое удаление заказов при удалении пользователя
);
Типы связей:
- Один-ко-многим (One-to-Many): Наиболее частый случай (как в примере выше).
- Один-к-одному (One-to-One): Для разделения редко используемых или конфиденциальных данных.
- Многие-ко-многим (Many-to-Many): Реализуется через связующую таблицу (junction table).
Без связей база данных превращается в набор несвязанных таблиц, что ведет к аномалиям данных, сложностям в обновлении и риску несогласованности.