Автор: Пользователь скрыл имя, 18 Ноября 2012 в 14:40, лекция
Лекции с глоссарием по базам данным
Проводник (Пфам,…)
Озеро (озеро,…)
Обслуживает (Пфам, озеро)
б) Связь бинарная, степень связи N:M следовательно применяем правило номер 6
Водится (озеро,…,вид)
Озеро (озеро,…)
Рыба (вид,…)
в) Связь бинарная, степень связи N:M следовательно применяем правило номер 6
Проводник (Пфам,…)
Рыба (вид,…)
Предпочитает (Пфам, вид,…)
Проанализируем и реорганизуем полученные отношения:
Озеро (Озеро, Оценка)
Рыба (Вид, Вес, Наживка)
Проводник (Фам, Озеро, Тном, Плата, Группа)
Водится (Озеро, Вид)
Предпочитает (Фам, вид)
Все эти отношения находятся в НФБК, но отношение Предпочитает (Фам, вид) – некорректное так как из него можно сделать неверные выводы о предметной области.
Из полученных отношений можно заключить, что П1 обслуживает О1, в О1 водится Р2, П1 предпочитает ловить Р2. Из чего можно было бы сделать вывод, что П1 предпочитает ловить в О1 Р2, а это неверно. Следовательно, в данном случае только бинарными связями обойтись нельзя. Причина неудачи образования этой связи только с помощью бинарных связей заключается в следующем, что Пi проводник предпочитает ловить рыбу Рi в озере Оi т.е. здесь объединяются три сущности и такое высказывание нельзя заменить комбинациями из двух сущностей (т.е. заменить на бинарные связи).
Правильная модель должна использовать трехсторонний или трехмерный вид связи.
|
|
Рис. 7.49 Трехсторонний вид связи. |
Рис. 7.50 Диаграмма ER-экземпляра связи “Предпочитает” |
Построим диаграмму-ER типа для трехсторонней связи “Предпочитает”:
|
Рис. 7.51 Диаграмма ER-типа трехcторонней связи “Предпочитает” |
В случае многосторонней связи (N- сторонней) необходимо использовать N+1 отношение, по одному на каждую сущность, причем ключами в этих отношениях будут ключи соответствующих сущностий. В последнем отношении будет хранится информация о связи. В него включаются ключевые атрибуты всех сущностей охваченных N–сторонней связью. Ключ в данном отношении выбирается после анализа всех атрибутов.
Если применить правило номер 7 к рассмотренному на рисунке 7.51 примеру, то мы получим следующие отношения:
Проводник (Фам,…)
Озеро (Озеро,…)
Рыба (Вид,…)
П_О_Р (Фам, Озеро, Вид,…) – первичный ключ не может быть определен до тех пор, пока не будут рассмотрены все другие атрибуты.
Если взять атрибуты из примера, то П_О_Р будет выглядеть: П_О_Р (Пфам, Нозеро, вид), то есть в данное отношение не будут добавленны дополнительные атрибуты.
Если каждый проводник предпочитает ловить в каждом озере только один вид рыбы, то
П_О_Р (Фам, Озеро, Вид). Если проводник может указать несколько предпочтительных видов для каждого озера, то П_О_Р (Фам, Озеро, Вид).
Если проводник мог бы указать время года когда он предпочтитает данный вид рыбы в каждом озере, то тогда набор атрибутов <Фам, Озеро, Вид> не мог бы быть первичным ключом, так как возможны были бы подобные кортежи:
<Иванов, Ладога, Лещь, Осень> Иванов предпочитает ловить осенью в Ладоге леща.
<Иванов, Ладога, Лещь, Лето>
Иванов предпочитает ловить
В некоторых ситуациях одних сущностей и связей может оказаться недостаточно для полноценного моделирования предметной области. Одна из таких ситуаций возникает тогда, когда экземпляры некоторой сущности должны играть разные роли в деятельности предприятия.
В качестве примера предположим, что
для небольшого предприятия-поставщика
автомобилей необходимо хранить
информацию о производственном персонале.
Различают две категории
Определим атрибуты представляющие для нас интерес:
Слфам |
- |
фамилия служащего |
Ртел |
- |
рабочий телефон мастера |
Дтел |
- |
домашний телефон служащего |
Адр.сл. |
- |
адрес служащего |
Тставка |
- |
почасовая тарифная ставка сборщика |
Оклад |
- |
Месячный оклад мастера |
Код.сб. |
- |
Код сборщика |
Сф.ком |
- |
сфера компетенции мастера |
Построим Диаграмма ER-типа связи “Руководит” соединяющей две сущности Мастер и Сборщик:
|
|
Рис. 7.52 Диаграмма ER-типа связи “Руководит” |
По диаграмме ER-типа связи “Руководит” отображенной на рисунке 7.52 формируем отношения используя правило 6
Мастер (Таб.ном.маст.,…)
Сборщик (Таб.ном.сборщ.,…,Таб.ном.
С этой моделью связана проблема. Она возникает при распределени неключевых атрибутов по предварительным отношениям.
К отнощению Мастер можно однозначно отнести: Ртел, Оклад, Сф.ком.
К отнощению Сборщик можно
Легко распределить почти все атрибуты, кроме Слфам, Дтел и Адр.сл.
С оставшимися атрибутами можно поступить следующим образом: разбить общие атрибуты на две части для Мастера и Сборщика, т.е. Слфам служащего = Слфам Мастера и Слфам Сборщика.
|
|
|
Рис. 7.53 Разбиение общих атрибутов Слфам, Дтел и Адр на две части |
Но количество атрибутов увеличивается, следовательно, возникнет дублирование.
Лучшим решением данной ситуации является следующее:
На рисунке 7.54 показано использование ролей для данного примера
|
| |
| ||
Рис. 7.54 Диаграмма ER-типа связи “Руководит” с использованием ролей |
Стрелки идущие от сущности Служащий к сущностям Мастер и Сборщик, указывают на то, что сущность Служащий является исходной, а сущности Мастер и Сборщик только ролями.
Исходная сущность служит для генерации
одного отношения, причем ключ сущности
это ключ этого отношения. Ролевые
элементы и связи их соединяющие,
порождают такое число отношени
Сформируем предворительные
Служащий (ТНС,…)
Мастер (ТНМ,…)
Сборщик (ТНСб,…,ТНМ)
Теперь без затруднений распределяем не ключевые атрибуты сущностий:
Служащий (ТНС, Слфам, Дтел, Сл.адр)
Мастер (ТНМ, Ртел, Оклад, Сф.ком)
Сборщик (ТНСб, Ставка, Код.сб, ТНМ)
Во всех отношениях один ключ, который является детерминантом, следовательно, все три отношения находятся в НФБК.
Отношение Служащий (ТНС, Слфам, Дтел, Сл.адр), полученное из исходной сущности, содержит информацию, общую для всех ее ролей ( т.е. служащих).
Отношения, полученные из ролей, содержат специфическую для каждой роли информацию. Отношения, порождаемые ролями связанны с отношением порожденным исходной сущностью через атрибут из общего домена. Т.е атрибуты ТНС, ТНМ и ТНСб принадлежат одному домену табельный номер.
Связь “Руководит” соединяет две роли одной исходной сущности, такая связь называется рекурсивной (т.е. если отбросить роль, то будет: служащий руководит служащим). Роли одной исходной сущности, могут быть связаны с другими сущностями или ролями других исходных сущностей.
Для увеличения скорости доступа при запросах можно дополнить отношение “Служащий” специальным атрибутом, для определения кем конкретно является Служащий: Мастером или Сборщиком. Служащий (ТНС, Слфам, Дтел, Сл.адр, Должность)
Предположим, что необходимо спроектировать БД для детского спортивного общества (ДСО) “Буревестник”. Этой БД будут пользоваться члены Центральные совета ДСО. Центральный совет полностью контролирует деятельность ДСО. В БД должны рассматриваться следующие вопросы:
2. Ограничения накладываемые на предметную область:
3. Выделение сущностей:
При построении ER-диаграммы главной проблемой является выделение сущностей. Как правило множество сущностей не уникально (т.е. разные проектировщики, решая одну и туже задачу, могут выделить разные пары сущностей).
Мы будем выделять пять исходных сущностей: Судья, ВУЗ, Служащий, Вид спорта, Студент.
У сущности Служащий одна роль Главный тренер.
У сущности ВУЗ две роли ВУЗ-Гость и ВУЗ-Хозяин.
Запишем ключевые атрибуты сущностей и их ролей:
Н_ВУЗ |
- |
название ВУЗа, |
Н_Х |
- |
название команды хозяев, |
Н_Г |
- |
название команды гостей, |
ВИД_СП |
- |
вид спорта, |
НОМ_СТ |
- |
номер студента, |
НОМ_СЛ |
номер служащего | |
НОМ_ТРЕН |
- |
номер главного тренера, |
НОМ_СУД |
- |
номер судьи. |
4. Построение ER–диаграммы показанно на рисунке:
|
Р ис. 7.55 Диаграмма ER-типа для базы данных ДСО “Буревестник” |
5. Сформируем отношения по правилам, чьи номера указаны в кружках:
Связь в ВУЗе работают СЛУЖАЩИЕ:
Вуз (Н_ВУЗ,…)
Служащий ( НОМ_СЛ,…,Н_ВУЗ)
Связь СТУДЕНТ учиться в ВУЗе:
Студент ( НОМ_СТ,…Н_ВУЗ)
Вуз (Н_ВУЗ,…)
Связь ВУЗ культивирует ВИД СПОРТА:
Вуз (Н_ВУЗ,…)
Вид_сп ( ВИД_СП,… )
Культивирует ( Н_ВУЗ,ВИД_СП,…)
Связь РАСПИСАНИЕ:
Судья (НОМ_СУД,…)
Вуз_гость (Н_Г,…)
Вуз_хозяин (Н_Х,…)
Расписание (НОМ_СТ,Н_Г,Н_Х,ВИД_СП,…)
Связь СТУДЕНТ занимается СПОРТОМ:
Студент (НОМ_СТ,…)
Вид спорта (ВИД_СП,…)
Участвует (ВИД_СП,НОМ_СТ,…)
Связь ГЛАВНЫЙ ТРЕНЕР тренирует ВИД СПОРТА:
Вид_сп ( ВИД_СП,… )
Тренер (НОМ_ТР,…,ВИД_СП)
Связь ГЛАВНЫЙ ТРЕНЕР является председателем по правилам данного ВИДА СПОРТА:
Вид_сп ( ВИД_СП,…,НОМ_ТР )
Тренер (НОМ_ТР,…)
Связь СУДЬЯ судит:
Судья (НОМ_СУД,…)
Вид_сп(ВИД_СП,…)
6. Вычеркиваем из полученных
отношений повторяющиеся и