Статья Автор: Деникина Н.В., Деникин А.В.

Типы связей между таблицами

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


1. Один ко многим (One-to-Many)

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

  • Пример:

    • Один отдел может иметь много сотрудников.
    • Таблица departments (отделы) и таблица employees (сотрудники).
  • Реализация:
    Используется внешний ключ (foreign key) в таблице с множественными записями (в данном случае, в таблице employees).

    Таблица departments:

    user_id | username
    1       | john_doe
    2       | jane_doe 

    Таблица employees:

    profile_id | user_id | bio
    1          | 1       | Developer
    2          | 2       | Designer
    

2. Один к одному (One-to-One)

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

  • Пример:

    • У каждого пользователя может быть только один профиль.
    • Таблица users (пользователи) и таблица user_profiles (профили пользователей).
  • Реализация:
    Используется уникальный внешний ключ (foreign key), чтобы каждая запись была связана только с одной другой записью.

    Таблица users:

    student_id | name
    1          | Alice
    2          | Bob 

    Таблица user_profiles:

    course_id | course_name
    1         | Math
    2         | Science 

3. Многие ко многим (Many-to-Many)

Одна запись в таблице A может быть связана с несколькими записями в таблице B, и наоборот.

  • Пример:

    • Один студент может записаться на несколько курсов, и один курс может быть записан несколькими студентами.
    • Таблица students (студенты) и таблица courses (курсы).
  • Реализация:
    Создаётся промежуточная таблица (таблица связи), которая содержит внешние ключи из обеих связанных таблиц.

    Таблица students:

    student_id | name 1 | Alice 2 | Bob

    Таблица courses:

    course_id | course_name 1 | Math 2 | Science

    Таблица связи student_courses:

    student_id | course_id
    1          | 1
    1          | 2
    2          | 1
     

4. Без связи (No Relation)

Таблицы могут существовать независимо друг от друга, если между ними нет логической связи. В таком случае их объединение производится только при необходимости анализа данных.

  • Пример:
    Таблица countries (страны) и таблица products (товары).
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать