Sobes.tech
Назад к вопросам
Middle
6

Что такое связь многие ко многим в SQL? Как реализуется?

Компании, где спрашивали
IT1

Ответ от нейросети

sobes.tech AI

Связь многие ко многим (many-to-many) в SQL означает, что одной записи из первой таблицы может соответствовать несколько записей из второй таблицы, и наоборот. Например, студенты и курсы: один студент может посещать несколько курсов, и один курс может иметь много студентов.

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

Пример:

-- Таблица студентов
CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(100)
);

-- Таблица курсов
CREATE TABLE Courses (
    CourseID INT PRIMARY KEY,
    Title VARCHAR(100)
);

-- Промежуточная таблица для связи многие ко многим
CREATE TABLE StudentCourses (
    StudentID INT,
    CourseID INT,
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

Таким образом, чтобы узнать, какие курсы посещает студент, или какие студенты записаны на курс, нужно делать JOIN через таблицу StudentCourses.