Как реализуется связь многие ко многим в БД

«Как реализуется связь многие ко многим в БД» — вопрос из категории Базы данных, который задают на 40% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Связь «многие ко многим» реализуется через промежуточную таблицу (junction table), которая содержит внешние ключи на обе связанные таблицы.

Пример:
Таблицы Students и Courses связаны как «многие ко многим» через таблицу Enrollments:

CREATE TABLE Students (
    student_id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE Courses (
    course_id INT PRIMARY KEY,
    title VARCHAR(100)
);

CREATE TABLE Enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);

Ключевые моменты:

  • Промежуточная таблица содержит составной первичный ключ из двух внешних ключей.
  • Можно добавить дополнительные атрибуты в связующую таблицу (например, дату зачисления).
  • Обеспечивает нормализацию и исключает дублирование данных.