Sobes.tech
Back to questions
Junior — Middle
78

Каким образом реализовать отношение многие-ко-многим в базе данных?

Companies where asked
МТС DigitalМТС Digital

Answer from AI

sobes.tech AI

Отношение многие-ко-многим в базе данных реализуется через промежуточную таблицу (join table), которая содержит внешние ключи на обе связанные таблицы.

Например, есть две сущности: users и roles. Один пользователь может иметь несколько ролей, и одна роль может принадлежать нескольким пользователям.

Структура таблиц:

  • users (id, name, ...)
  • roles (id, role_name, ...)
  • user_roles (user_id, role_id) — промежуточная таблица, где user_id и role_id — внешние ключи.

В Go при работе с ORM (например, GORM) можно описать это так:

type User struct {
    ID    uint
    Name  string
    Roles []Role `gorm:"many2many:user_roles;"`
}

type Role struct {
    ID   uint
    Name string
}

Таким образом, ORM сам управляет связью через таблицу user_roles.

Если без ORM, то нужно вручную писать SQL-запросы с JOIN по промежуточной таблице.