Многие ко многим

В системе выбора курсов есть две сущности: студенты и курсы. Один студент может выбрать несколько курсов, а один курс могут выбрать несколько студентов — это и образует связь «многие ко многим». В реляционных базах данных для представления связи «многие ко многим» между студентами и курсами обычно используется промежуточная таблица, например таблица выбора курсов. В ней можно хранить информацию о том, какие курсы выбрал каждый студент и какие студенты выбрали каждый курс. Такая структура позволяет корректно представить связь «многие ко многим» между студентами и курсами.

ER-связь выглядит следующим образом

alt text

Конфигурация поля

alt text

Описание параметров

Source collection

Исходная коллекция, то есть таблица, в которой находится текущее поле.

Target collection

Целевая коллекция, то есть таблица, с которой устанавливается связь.

Through collection

Промежуточная коллекция. Когда между двумя сущностями существует связь «многие ко многим», для хранения этой связи необходимо использовать промежуточную таблицу. Промежуточная таблица содержит два внешних ключа, предназначенных для хранения связи между двумя сущностями.

Source key

Поле, на которое ссылается ограничение внешнего ключа; оно должно быть уникальным.

Foreign key 1

Поле промежуточной таблицы, используемое для установления связи с исходной таблицей.

Foreign key 2

Поле промежуточной таблицы, используемое для установления связи с целевой таблицей.

Target key

Поле, на которое ссылается ограничение внешнего ключа; оно должно быть уникальным.

ON DELETE

ON DELETE — это правило обработки ссылок на внешние ключи в связанной дочерней таблице при удалении записи из родительской таблицы. Оно является одним из параметров при определении ограничения внешнего ключа. Распространённые параметры ON DELETE включают:

  • CASCADE: при удалении записи из родительской таблицы автоматически удаляются все связанные с ней записи из дочерней таблицы.
  • SET NULL: при удалении записи из родительской таблицы значение внешнего ключа в связанных записях дочерней таблицы устанавливается в NULL.
  • RESTRICT: параметр по умолчанию. При попытке удалить запись из родительской таблицы удаление запрещается, если существуют связанные с ней записи в дочерней таблице.
  • NO ACTION: аналогично RESTRICT: если существуют связанные записи в дочерней таблице, удаление записи из родительской таблицы запрещается.