Gymterview
junior

Какие существуют типы связей в базе данных?

Типы связей (relationships) определяют, как записи одной таблицы соотносятся с записями другой таблицы. Существует три основных типа связей.

Один к одному (1:1)

Каждой записи в таблице A соответствует ровно одна запись в таблице B, и наоборот.

Пример: каждый сотрудник имеет один пропуск, каждый пропуск принадлежит одному сотруднику.

Пример
CREATE TABLE employees (
    id BIGINT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE passes (
    id BIGINT PRIMARY KEY,
    employee_id BIGINT UNIQUE NOT NULL,
    card_number VARCHAR(20),
    FOREIGN KEY (employee_id) REFERENCES employees(id)
);

Применение: разделение таблицы для вынесения редко используемых или конфиденциальных данных.

Один ко многим (1:N)

Каждой записи в таблице A может соответствовать несколько записей в таблице B, но каждая запись в B связана только с одной записью в A.

Пример: в каждом университете несколько факультетов, но каждый факультет принадлежит одному университету.

Пример
CREATE TABLE universities (
    id BIGINT PRIMARY KEY,
    name VARCHAR(200)
);

CREATE TABLE faculties (
    id BIGINT PRIMARY KEY,
    university_id BIGINT NOT NULL,
    name VARCHAR(200),
    FOREIGN KEY (university_id) REFERENCES universities(id)
);

Это самый распространённый тип связи в реляционных базах данных.

Многие ко многим (M:N)

Каждой записи в таблице A может соответствовать несколько записей в B, и наоборот. Реализуется через промежуточную (связующую) таблицу.

Пример: один студент может посещать несколько курсов, один курс может посещать несколько студентов.

Пример
CREATE TABLE students (
    id BIGINT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE courses (
    id BIGINT PRIMARY KEY,
    title VARCHAR(200)
);

-- Связующая таблица
CREATE TABLE student_courses (
    student_id BIGINT NOT NULL,
    course_id BIGINT NOT NULL,
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES students(id),
    FOREIGN KEY (course_id) REFERENCES courses(id)
);

Сводная таблица

Тип связи FK в дочерней таблице Промежуточная таблица Пример
1:1 Да + UNIQUE Нет Сотрудник — пропуск
1:N Да Нет Университет — факультеты
M:N Нет Да Студенты — курсы

На собеседовании: интервьюер ожидает, что кандидат объяснит, как реализуется связь M:N (через промежуточную таблицу), и знает, что 1:1 на практике используется редко (обычно для разделения данных по частоте доступа или безопасности).