Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_2013_Задания / КонспектЛекций_БД_СоболеваНВ_2013.docx
Скачиваний:
125
Добавлен:
12.03.2015
Размер:
634.27 Кб
Скачать

1.2 Связь частичная для одной из сущностей

Пусть существуют дисциплины, по которым преподаватель неизвестен (рисунок 2).

Рисунок 2 - Связь частичная для сущности ДИСЦИПЛИНА

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

Для ликвидации проблемы вставки создадим два отношения:

ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра, Код дисциплины);

ДИСЦИПЛИНА (Код дисциплины, Название).

В полученных отношениях не будет пустых мест и не будет избыточности данных.

Связь отношений между собой по атрибуту Код дисциплины.

Правило. Если связь 1:1 носит частичный характер для одной из сущностей, то для каждой сущности создаётся отдельное отношение; ключ сущности с необязательной связью добавляется в качестве внешнего ключа в другое отношение.

1.3 Связь частичная для обеих сущностей

Пусть существуют преподаватели, которые ничего не читают, и дисциплины, которые никем не читаются (рисунок 3).

Рисунок 3 - Связь частичная для обеих сущностей

В этом случае для решения проблемы вставки необходимо создать три отношения:

ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);

ДИСЦИПЛИНА (Код дисциплины, Название);

ЧИТАЕТ (Табельный номер чит, Код дисциплины).

В отношении ЧИТАЕТ в качестве ключа выбран Табельный номер. Чтобы избежать появления в модели двух отношений с одинаковыми ключами, имя этого атрибута уточняется с учётом его роли – ключ того преподавателя, который реально читает лекции по этой дисциплине. Примечание: подобная ситуация будет представлена в концептуальной модели явно, если преподавателей разбить на два подкласса: читающие и не читающие.

Правило. Если связь 1:1 носит частичный характер для обеих сущностей, то строится по одному отношению для каждой сущности и одно отношение для связи; отношение для связи содержит ключи обеих сущностей, один из которых выбирается в качестве первичного ключа данного отношения; отношение для связи может иметь собственные описывающие атрибуты.

2 Реализация бинарной связи 1:m («один-ко-многим»)

2.1 Связь обязательная для m-связной сущности

Пусть преподаватель читает много дисциплин или ничего, но каждая дисциплина обязательно кем-то читается (рисунок 4).

Рисунок 4 - Связь обязательная для m-связной сущности

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

Для исключения указанных проблем создадим два отношения:

ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);

ДИСЦИПЛИНА (Код дисциплины, Название, Табельный номер).

Правило. Если связь 1:m носит обязательный характер для m-связной сущности, то для каждой сущности создаётся отдельное отношение; ключ сущности с необязательной связью добавляется в качестве внешнего ключа в другое отношение.

2.2 Связь частичная для m-связной сущности

Пусть существуют дисциплины, которые никем не читаются (рисунок 5).

Рисунок 5 – Связь необязательная для m-связной сущности

Предыдущее правило в этом случае не решает проблемы вставки, поэтому необходимо создать три отношения:

ПРЕПОДАВАТЕЛЬ (Табельный номер, ФИО, Кафедра);

ДИСЦИПЛИНА (Код дисциплины, Название);

ЧИТАЕТ (Табельный номер, Код дисциплины чит).

В отношении ЧИТАЕТ изменено имя первичного ключа (см. п. 1.3).

Правило. Если связь 1:m носит частичный характер для m-связной сущности, то строится по одному отношению для каждой сущности и одно отношение для связи; отношение для связи содержит ключи обеих сущностей, первичным ключом отношения для связи является ключ m-связной сущности; отношение для связи может иметь и другие неключевые атрибуты.