Ответ
Связь «многие ко многим» реализуется через промежуточную таблицу (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)
);
Ключевые моменты:
- Промежуточная таблица содержит составной первичный ключ из двух внешних ключей.
- Можно добавить дополнительные атрибуты в связующую таблицу (например, дату зачисления).
- Обеспечивает нормализацию и исключает дублирование данных.