Junior
50
questionbank

Как настраиваются связи между таблицами в реляционных базах данных?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

В реляционных базах данных связи между таблицами настраиваются с помощью внешних ключей (Foreign Keys).

Внешний ключ — это колонка или набор колонок в одной таблице, которые ссылаются на первичный ключ (Primary Key) другой таблицы. Он устанавливает логическую связь между записями в двух таблицах.

При настройке связи:

  1. Определяется первичный ключ в "родительской" (Parent) таблице. Первичный ключ уникально идентифицирует каждую запись.
  2. В "дочерней" (Child) таблице создается колонка (или набор колонок), которая будет служить внешним ключом.
  3. Эта колонка в "дочерней" таблице связывается с первичным ключом "родительской" таблицы.
  4. Устанавливаются ограничения целостности данных (Constraint):
    • REFERENCES: Указывает, на какую таблицу и какой столбец (первичный ключ) ссылается внешний ключ.
    • ON UPDATE behavior: Определяет, что происходит с записями в дочерней таблице при изменении первичного ключа в родительской. Возможные варианты:
      • CASCADE: Изменения каскадно применяются к дочерним записям.
      • SET NULL: Значения внешнего ключа в дочерней таблице устанавливаются в NULL.
      • RESTRICT: Операция изменения запрещается, если существуют связанные дочерние записи.
      • NO ACTION: Аналогично RESTRICT в большинстве СУБД.
      • SET DEFAULT: Значения внешнего ключа устанавливаются в значение по умолчанию.
    • ON DELETE behavior: Определяет, что происходит с записями в дочерней таблице при удалении записей в родительской. Варианты поведения те же, что и для ON UPDATE.

Пример синтаксиса SQL для создания связи:

sql

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

Тип связиОписаниеПример
One-to-One (1:1)Одна запись в первой таблице соответствует одной записи во второй и наоборот. Редкий случай для реляционных БД.Пользователь и его профиль.
One-to-Many (1:N)Одна запись в первой таблице соответствует множеству записей во второй, но каждая запись во второй соответствует только одной записи в первой.Клиент и его заказы.
Many-to-Many (N:M)Множество записей в первой таблице соответствует множеству записей во второй, и наоборот. Реализуется через промежуточную (связующую) таблицу.Продукты и категории.

Для связи Many-to-Many создается третья таблица, содержащая внешние ключи к обеим таблицам, которые нужно связать.

sql