Fork me on GitHub

Association Table Mapping (Разметка таблиц связей)

Паттерн проектирования Association Table Mapping

Паттерн проектирования Association Table Mapping

Описание Association Table Mapping

Сохраняет соответствие в виде таблицы с внешними ключами к таблицам, которые объединены этим соответствием.

Объекты с лёгкостью могут управлять наборами из нескольких значений при использовании коллекций в качестве собственных свойств. Реляционные базы данных не предоставляют такой возможности и ограничиваются полями с одним значением. При разметке соответствия "один ко многим", можно использовать паттерн Foreign Key Mapping (Разметка внешних ключей), используя внешний ключ для однозначного соответствия. Но отношения "многие ко многим" не могут обеспечить этого, потому что нет однозначной сущности на которую ссылался бы внешний ключ.

Решением здесь является классическое разрешение, используемое в реляционных БД годами: создание дополнительной таблицы, для хранения множественных связей. Тогда использование Association Table Mapping позволит разметить многозначные поля через связующую таблицу

Использована иллюстрация с сайта Мартина Фаулера.

Источник