Назад к вопросам
Middle
5
Типы связей в реляционных БД. Как реализуется One-to-One и Many-to-Many?
Компании, где спрашивали
ИП Ганус Александр Андреевич
Ответ от нейросети
sobes.tech AI
В реляционных базах данных связи между таблицами бывают нескольких типов:
- One-to-One (один к одному): Каждая запись в первой таблице связана с ровно одной записью во второй таблице.
- One-to-Many (один ко многим): Одна запись в первой таблице связана с несколькими записями во второй.
- Many-to-Many (многие ко многим): Записи в первой таблице могут быть связаны с несколькими записями во второй и наоборот.
Реализация One-to-One:
Обычно реализуется с помощью внешнего ключа с уникальным ограничением в одной из таблиц.
CREATE TABLE Person (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE Passport (
id INT PRIMARY KEY,
person_id INT UNIQUE,
passport_number VARCHAR(50),
FOREIGN KEY (person_id) REFERENCES Person(id)
);
Здесь person_id в таблице Passport ссылается на Person и уникален, что обеспечивает связь один к одному.
Реализация Many-to-Many:
Требует создания промежуточной таблицы (join table), которая содержит внешние ключи на обе связанные таблицы.
CREATE TABLE Student (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE Course (
id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE Student_Course (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES Student(id),
FOREIGN KEY (course_id) REFERENCES Course(id)
);
Таким образом, студент может быть записан на несколько курсов, и курс может иметь много студентов.