Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по БД.doc
Скачиваний:
95
Добавлен:
01.05.2014
Размер:
413.18 Кб
Скачать

Правила генерации отношений из er-диаграмм:

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

Например, имеем сущность Магазин с атрибутами наименование, факс, телефон, адрес, специализация, и сущность Директор с атрибутами №Паспорта, ФИО. Если каждый магазин обязательно имеет директора, а человек, являющийся директором, может быть директором только одного магазина, получим одно отношение Магазин(наименование, факс, телефон, адрес, специализация,)

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

Например, имеем сущность Человек с атрибутами №Паспорта, ФИО, год рождения, адрес и Зачетка с атрибутами №Зачетки, УчебноеЗаведение, Факультет, КогдаВыдана. Поскольку не каждый человек, а только студент, имеет зачетку, но зачетка обязательно кому-то принадлежит, то получим два отношения: Человек(№Паспорта, ФИО, год рождения, адрес) и Зачетка(№Зачетки, УчебноеЗаведение, Факультет, КогдаВыдана, №Паспорта).

Еще один пример такой связи приведен на рис. 2.9. В результате будут получены два отношения: Секретарь и Кафедра, причем в отношение Секретарь добавится атрибут Название, который является первичным ключом отношения Кафедра.

  1. Если степень бинарной связи равна 1:1 и класс принадлежности ни одной из сущностей не является обязательным, то требуется 3 отношения (по одному для каждой сущности - объектные и одно связное). Ключами объектных отношений являются ключи соответствующих сущностей. Связное отношение содержит эти ключи в качестве своих атрибутов.

Например, имеем сущность Книга в библиотеке с атрибутами Шифр, Название, Автор, ГодИздания. Книга может находиться на полке в зале подручного фонда, а может и в запасниках. Если книга находится в зале, она занимает одну определенную ячейку на полке, в этой ячейке не может быть несколько экземпляров одной книги, но не может быть другой, при этом ячейка может быть и пуста. Сущность Ячейка имеет атрибуты №Зала, №Стеллажа, №Полки, №ячейки. Получим три отношения: Книга(Шифр, Название, Автор, ГодИздания), Ячейка(№Зала, №Стеллажа, №Полки, №ячейки), Подручный_Фонд(Шифр, №Зала, №Стеллажа, №Полки, №ячейки, КоличествоЭкземпляров).

  1. Если степень бинарной связи равна 1:n и класс принадлежности n-связной сущности является обязательным, достаточно использовать 2 отношения (по одному для каждой сущности). Ключ сущности является ключом соответствующего отношения, а ключ односвязной сущности добавляется как атрибут в отношение n-связной сущности.

Например, сущность Группа с атрибутами №Группы, Факультет, Специальность, Курс состоит из студентов. Сущность Студент имеет атрибуты №Зачетки, ФИО, Адрес, ГодРождения. В группе обязательно есть хотя бы один студент. Получим два отношения: Группа(№Группы, Факультет, Специальность, Курс) и Студент(№Зачетки, ФИО, Адрес, ГодРождения, №Группы).

Еще один пример связи 1:n, обязательной с каждой из сторон, а следовательно и со стороны n, приведен на рис. 2.10. В результате получим два отношения: Секретарь и Абитуриент, а атрибут ФИО - первичный ключ отношения Секретарь добавится к атрибутам отношения Абитуриент.

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

Например, пусть в клубе собаководства есть перечень всех пород собак и список клубных собак. Сущность Порода имеет атрибуты НазваниеПороды, СреднийРост, СреднийВес, Назначение, а сущность Собака имеет атрибуты №Родословной, Кличка, Возраст. Связь между сущностями Порода и Собака – 1:n, причем необязательная со стороны n, поскольку собак определенной породы в данном клубе может и не быть. В результате получим три отношения: Порода(НазваниеПороды, СреднийРост, СреднийВес, Назначение), Собака(№Родословной, Кличка, Возраст) и КлубныеПороды(НазваниеПороды, №Родословной)

  1. Если степень бинарной связи равна m:n, то независимо от класса принадлежности требуются 3 отношения (2- объектных и 1 связное).

Например, связь между сущностью Книга с атрибутами Шифр, Название, Автор, ГодИздания и сущностью Читатель с атрибутами Билет, ФИО, Телефон является связью n:m. В результате получим три отношения: Книга(Шифр, Название, Автор, ГодИздания), Читатель(Билет, ФИО, Телефон) и Взял(Шифр, Билет, Дата).

Пример на рис. 2.11 в результате применения правила 6 даст следующие три отношения: Абитуриент (№ЭкзЛиста, …), Предмет(Название, …) и связывающее отношение Сдал(№ЭкзЛиста, Название, Дата, Оценка)

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

Пример, на рисунке 2.13 после применения правила 7 даст два отношения: Магазин(Название, …) и Отдел (Название, №Отдела, …, ). Таким образом, первичный ключ отношения Отдел будет составным, в его состав войдет ключ отношения Магазин.

  1. Если одна сущность является общей сущностью, а другие сущности - ее категориями, то возможны два варианта генерации отношений. Первый вариант: общая сущность служит источником для генерации одного отношения, ее ключ является ключом этого отношения. Ключ общей сущности добавляется как атрибут в отношения, соответствующие категориям. Если категории имеют связи друг с другом, то порождается такое число отношений, которое определяется правилами 1-6. Возможен и другой вариант, при котором общая сущность не порождает отношение, а все ее атрибуты становятся атрибутами отношений, порожденных категориями. Выбор варианта зависит от количества общих атрибутов. Если количество атрибутов общей сущности больше, чем количество атрибутов ее категорий, то есть смысл в выборе первого варианта. Если таких атрибутов 2-3, то нет смысла в создании самостоятельного отношения для общей сущности.

Применим это правило к фрагменту предметной области, изображенному на рис. 2.14. Предположим, что атрибутами сущности Лэтишник кроме №паспорта являются и все паспортные данные, такие как ФИО, ГодРождения , ДомашнийАдрес, СемейноеПоложение и т.п.. Тогда есть смысл создать отношение Лэтишник, а не помещать его атрибуты в отношения Студент и Преподаватель. Поскольку между сущностями Студент и Преподаватель, являющимися категориями сущности Лэтишник, существует связь n:m, получим четыре отношения. Лэтишник(№паспорта, ФИО, ГодРождения , ДомашнийАдрес, СемейноеПоложение, …), Студент(№паспорта, №Зачетки, Группа, Специальность,…), Преподаватель(((№паспорта, №ТрудовойКнижки, Должность, Кафедра, …), Обучается(№Зачетки, №ТрудовойКнижки, …). Если применить правило 8 в его втором варианте, то получим 3 отношения: Студент(,№Зачетки, №паспорта, ФИО, ГодРождения , ДомашнийАдрес, СемейноеПоложение, Группа, Специальность,…), Преподаватель(№ТрудовойКнижки, №паспорта, ФИО, ГодРождения , ДомашнийАдрес, СемейноеПоложение,Должность, Кафедра, …), Обучается(№Зачетки, №ТрудовойКнижки, …).Атрибуты сущности Лэтишник в полном составе будут помещены как в отношение Студент, так и в отношение Преподаватель. В этих отношениях атрибут №паспорта является возможным ключом.

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

Учитель (Фамилия, Имя, Отчество, …),

Кабинет (№Кабинета,Фамилия, Имя, Отчество, … ),

Класс (Год_Обучения, Литера, Фамилия, Имя, Отчество, …),

Предмет (Название, …),

Преподает (Название, Фамилия, Имя, Отчество).

  1. При наличии n-сторонней связи между сущностями генерируется n+1 отношение (по одному для каждой сущности со своим первичным ключом и одно для связи). Связное отношение имеет среди своих атрибутов ключи каждой сущности.

Применяя это правило к фрагменту предметной области, изображенному на рис. 2.16, получим 4 отношения: Проводник(ИмяПроводника, …), Рыба(Вид, …), Озеро(НазваниеОзера), ПредпочитаетЛовить(ИмяПроводника, Вид, НазваниеОзера).

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

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

  2. Определить функциональные зависимости между атрибутами каждого отношениями.

  3. Проверить соответствие каждого отношения нормальной форме Бойса- Кодда (НФБК).

  4. Если некоторым атрибутам не нашлось места в предварительных отношениях, или есть отношения, не находящиеся в НФБК, следует перестроить ER- диаграмму.

Данная последовательность действий представляет собой метод проектирования баз данных, который носит название ER-метода. Рассмотрим пример проектирования БД этим методом.

Пусть требуется создать базу данных для работника деканата. В БД должны храниться сведения о группах и студентах: ФИО студента, № зачетной книжки, № группы, факультет, кафедра, специальность, год образования группы, адрес постоянной прописки студента, оценки, полученные студентом по каждой из дисциплин в текущей сессии, и отметки о сданных зачетах.

В предметной области можно выделить следующие сущности: сущность Студент с атрибутами №_Зачетки, ФИО, Адрес, сущность Группа с атрибутами №_Группы, Факультет, Специальность, Кафедра, Год_Образования и сущность Предмет с атрибутом Название_Предмета. Поскольку специальность характеризуется не только номером, но и названием, добавим в предметную область сущность Специальность, при этом атрибут Специальность из сущности Группа должен быть удален. Атрибутами сущности Специальность пусть будут №_Специальности, Название_Специальности, Срок_Подготовки. Студенты могут иметь по одному и тому же предмету 2 записи в ведомости и, соответственно, в зачетной книжке: отметку о сдаче зачета по лабораторным работами и экзаменационную оценку - атрибуты ЗачетСдал (может принимать значение Да/Нет), ОценкаЭкз (отлично, хорошо, удовлетворительно, неудовлетворительно, неявка). Необходимо также указать даты сдачи зачета и экзамена – атрибуты ДатаЗ, ДатаЭ. ER - диаграмма для описываемой предметной области изображена на рис. 2.17.

Рис.2.17. Модель предметной области «Деканат»

На диаграмме изображены не все атрибуты предметной области, а только идентификаторы сущностей. Связь между сущностью Студент и сущностью Группа можно обозначить словом «обучается» со стороны сущности Студент: «студент обучается в группе». Поскольку в группе есть хотя бы один студент, но может быть много студентов, то связь между сущностью Группа и сущностью Студент - это связь 1:n, обязательная со стороны n (со стороны сущности Студент). При генерации отношений для этого фрагмента предметной области следует воспользоваться правилом 4. Связь 1:n имеет место между сущностью Специальность и сущностью Группа, так как по каждой специальности выпускается от одной до нескольких групп. В этом случае надо также воспользоваться правилом 4. Необходима, также, связь между сущностями Студент и Предмет, которую можно назвать «сдал». Это связь n:m, поэтому для генерации отношений воспользуемся правилом 6. В результате получим следующие предварительные отношения:

Студент(№Зачетки, №Группы)

Группа(№Группы, №Специальности)

Специальность(№Специальности)

Предмет(НазваниеПредмета)

Сдал(№Зачетки, НазваниеПредмета)

Попытаемся разместить в этих отношениях пока еще не попавшие в них атрибуты предметной области. Добавив атрибуты ФИО_Студента и Адрес в отношение Студент, получим

Студент(№_Зачетки, №Группы, ФИО_Студента, Адрес).

Атрибуты Факультет, Кафедра, Год_Образования поместим в отношение Группа, которое примет вид

Группа(№Группы, №_Специальности, Факультет, Кафедра, Год_Образования).

Атрибуты Название_Специальности и Срок_Подготовки принадлежат отношению Специальность. Получим

Специальность(№_Специальности, Название_Специальности, Срок_Подготовки)

Атрибуты ЗачетСдал, ДатаЗ, ОценкаЭкз, ДатаЭ следует разместить в отношении Сдал. Отношение примет вид

Сдал(№_Зачетки, Название_Предмета, ЗачетСдал, ДатаЗ, ОценкаЭкз, ДатаЭ)

Отношение Сдал, если бы вместо атрибутов ЗачетСдал, ДатаЗ, ОценкаЭкз, ДатаЭ мы ввели атрибут Вид_Отчетности со значениями «зачет», «экзамен», атрибут Дата – дата сдачи зачета, экзамена или курсовой работы, атрибут Отметка, принимающий значения: «зачет», «незачет», «неявка», «отлично», «хорошо», «удовлетворительно», «неудовлетворительно», могло бы иметь вид:

Сдал(№_Зачетки, Название_Предмета, Вид_Отчетности, Дата, Отметка),

что позволило бы сократить число столбцов таблицы, но тогда бы увеличилось число строк, если по предмету сдается и зачет и экзамен. В отношение Предмет атрибуты не добавились, в нем есть единственный атрибут – Название_Предмета. Поскольку все атрибуты отношения Предмет входят в отношение Сдал, то оно оказывается избыточным.

Таким образом, получаем четыре отношения, все атрибуты предметной области оказались распределенными. Теперь определим ФЗ между атрибутами каждого из полученных отношений, и проверим отношения на соответствие НФБК.

В отношении Студент имеет место ФЗ №_Зачетки №Группы, ФИО_Студента, Адрес. Других зависимостей нет, так как ФИО может повторяться и в пределах группы, адреса студентов, живущих в общежитии, также могут совпадать. Таким образом, отношение Студент по определению находится в НФБК.

Соседние файлы в предмете Базы данных