Связь частичная для обеих сущностей
Пусть существуют преподаватели, которые ничего не читают, и дисциплины, которые никем не читаются (рисунок 7.3).
Рисунок 7.3 – Связь частичная для обеих сущностей
В этом случае для решения проблемы вставки необходимо создать три отношения:
ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);
ДИСЦИПЛИНА (Код дисциплины, Название дисциплины);
ЧИТАЕТ (Табельный номер чит, Код дисциплины).
В отношении ЧИТАЕТ в качестве ключа выбран Табельный номер. Чтобы избежать появления в модели двух отношений с одинаковыми ключами, имя этого атрибута уточняется с учётом его роли – ключ того преподавателя, который реально читает лекции по этой дисциплине.
Правило. Если связь 1:1 носит частичный характер для обеих сущностей, то строится по одному отношению для каждой сущности и одно отношение для связи; отношение для связи содержит ключи обеих сущностей, один из которых выбирается в качестве первичного ключа данного отношения; отношение для связи может иметь собственные описывающие атрибуты.
Реализация бинарной связи 1:m
Связь всюду определённая для m-связной сущности
Пусть преподаватель читает много дисциплин или ничего, но каждая дисциплина обязательно кем-то читается (рисунок 7.4).
Рисунок 7.4 – Связь всюду определённая для m-связной сущности
При попытке создать одно отношение возникают проблемы вставки и избыточности данных, т.к. будут пустые места там, где преподаватель ничего не читает, и будут повторяться сведения о преподавателе для каждой читаемой им дисциплины.
Для исключения указанных проблем создадим два отношения:
ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);
ДИСЦИПЛИНА (Код дисциплины, Название дисциплины, Табельный номер).
Правило. Если связь 1:m носит обязательный характер для m-связной сущности, то для каждой сущности создаётся отдельное отношение; ключ сущности с необязательной связью добавляется в качестве внешнего ключа в другое отношение.
Связь частичная для m-связной сущности
Пусть существуют дисциплины, которые никем не читаются (рисунок 7.5).
Связь частичная для m-связной сущности
Рисунок 7.5 - Связь частичная для m-связной сущности
Предыдущее правило в этом случае не решает проблемы вставки, поэтому необходимо создать три отношения:
ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);
ДИСЦИПЛИНА (Код дисциплины, Название дисциплины);
ЧИТАЕТ (Табельный номер, Код дисциплины чит).
В отношении ЧИТАЕТ изменено имя первичного ключа (см. 7.1.3).
Правило. Если связь 1:m носит частичный характер для m-связной сущности, то строится по одному отношению для каждой сущности и одно отношение для связи; отношение для связи содержит ключи обеих сущностей, первичным ключом отношения для связи является ключ m-связной сущности; отношение для связи может иметь собственные описывающие атрибуты.
Бинарная связь n:m
Пусть преподаватель читает много дисциплин или ничего, и каждая дисциплина читается несколькими преподавателями или никем (рисунок 7.6).
Связь n:m
Рисунок 7.5 – Связь n:m
Очевидно, что в этом случае устранить избыточность можно только путём создания трёх отношений:
ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);
ДИСЦИПЛИНА (Код дисциплины, Название дисциплины);
ЧИТАЕТ (Табельный номер, Код дисциплины).
В отношении ЧИТАЕТ между внешними ключами не существует функциональной зависимости, и свойством уникальности обладает только их сочетание, поэтому первичным ключом отношения для связи становится составной ключ.
Если предположить, что связи ЧИТАЕТ и ЧИТАЕТСЯ носят обязательный характер, то рассуждая аналогично предыдущему, получим такой же результат: три отношения. Поэтому правило для связи n:m не включает характеристику обязательности связи.
Правило. Если связь n:m, то строится по одному отношению для каждой сущности и одно отношение для связи; отношение для связи содержит ключи обеих сущностей, первичным ключом отношения для связи является ключ, состоящий из ключей обеих сущностей; отношение для связи может иметь собственные описывающие атрибуты.