Sobes.tech
Назад к вопросам
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)
);

Таким образом, студент может быть записан на несколько курсов, и курс может иметь много студентов.