Что такое отношение (реляция) в реляционных базах данных и для чего оно нужно?

«Что такое отношение (реляция) в реляционных базах данных и для чего оно нужно?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Отношение (реляция) в реляционных СУБД — это логическая связь между таблицами, устанавливаемая через ключи. Она нужна для нормализации данных, устранения избыточности и обеспечения целостности.

Основные типы отношений:

  1. Один к одному (1:1) — одной записи в таблице A соответствует не более одной записи в таблице B (например, ПользовательПаспортные данные).
  2. Один ко многим (1:N) — одной записи в таблице A может соответствовать множество записей в таблице B (например, АвторКниги).
  3. Многие ко многим (M:N) — реализуется через связующую таблицу, так как одной записи в A соответствует множество записей в B и наоборот (например, СтудентыКурсы через таблицу Зачисления).

Пример SQL для связи 1:N:

-- Родительская таблица
CREATE TABLE Customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

-- Дочерняя таблица с внешним ключом
CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES Customers(customer_id) ON DELETE CASCADE
);

Преимущества: обеспечение ссылочной целостности, эффективность хранения, возможность выполнения сложных запросов с помощью JOIN.