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

4.3 Нормализация через декомпозицию

Нормализация через декомпозицию основана на рассмотренном нами выше определении 3НФ. Всегда можно взять некоторую схему отношения R, не находящуюся в 3НФ относительно множества функциональных зависимостей F, и разложить (декомпозировать) ее в схему базы данных, имеющую 3НФ относительно F.

Разложение (декомпозиция) схемы отношения R означает разбиение ее на пару схем отношений r1 и R2 так, чтобы любое отношение r(R), удовлетворяющее F, разлагалось без потерь на R1 и Я2, другими словами, соединение отношений r1 и R2 вновь давало бы отношение R, т.е.

R=∏R1(r)R2(r)

Если какое-либо из отношений R1 и R2 не находится в 3НФ, то процесс декомпозиции продолжается до тех пор, пока все полученные отношения не будут находиться в 3НФ относительно F.

Пусть имеется отношение R, в котором существует транзитивная зависимость не первичного атрибута от ключа, т.е. имеется ключ K R, множество Y R и не первичный атрибут A в R, такие, что K→Y, Y→K, Y→A относительноF и A KY. Тогда схему R можно разложить на две схемы R1 и R2, где R1=R-A и R2=YA.

В r1 ключом будет множество К, в R2 - множество Y.

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

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

Если такие атрибуты имеются, то они также транзитивно зависят от K и их можно удалить одновременно.

Предположим, А1, А2, …,Аm находим R-(KY) и зависит от Y. Тогда R1=R-(A1, A2, …Am) и R2=YA1, A2, …, Am.

Рассмотрим процесс нормализации через декомпозицию на следующем примере: не R={ФИО_Ст, Г_Р, Группа, Староста, Кафедра, ФИО_ЗК, Телефон}

F={ФИО_Ст→Г_Р, Группа, Кафедра;

Группа→Староста, Кафедра;

Кафедра→ФИО_ЗК, Телефон}

K=ФИО_Ст.

Так как ФИО_Ст→Кафедра, Кафедра→ФИО_ЗК, Телефон, то атрибуты ФИО_ЗК, Телефон транзитивно зависят от ключа ФИО_Ст. Поэтому разбиваем отношение R на

R1={ФИО Ст, Г_Р, Группа, Староста, Кафедра };

R2={Кафедра, ФИО_ЗК, Телефон}.

Заметим, что атрибут Кафедра остается и в отношение R1, и в отношении R2. Именно этот атрибут позволит нам не потерять информацию при декомпозиции, так как

Отношение R2 находится в 3НФ, что нельзя сказать об отношении R1. В отношении R1 ФИО_Ст→Группа, Группа→Староста. Кафедра.

Тогда отношение R1 необходимо декомпозировать на отношения R11 и R12:

R11={ФИО Ст, Г_Р, Группа}

R12={Группа, Староста, Кафедра},

которые находятся в 3НФ, и

В приложении А рассматривается пример построения IDEF1X-диаграммы и схем отношений в третьей нормальной форме.

Приложение А

Пример оформления лабораторной работы по проектированию базы данных

Перечень предметных областей:

  1. Жилищно-эксплуатационный участок.

  2. Милиция

  3. Ремонт автомобилей.

  4. Бухгалтерия предприятия

  5. Юридическая консультация

  6. Больница

  7. Магазин

  8. Склад

  9. Отдел сбыта предприятия

  10. Школа

  11. Продажа железнодорожных билетов

  12. Продажа авиабилетов

  13. Прокат видеофильмов

  14. Библиотека

  15. Налоговая инспекция

  16. Стол заказов

  17. Таможня

  18. Городской (областной) кинопрокат

  19. Информационная система руководителя фирмы

  20. Почта

  21. Телефонная компания

  22. Дом быта

  23. Продажа компьютеров и оргтехники

  24. 3авод

  25. Служба занятости

Задание на лабораторную работу

  1. В заданной предметной области выделить 4-5 сущностей.

  1. Для каждой сущности определить 4-5 атрибутов по возможности разных типов.

  2. С помощью пакета ERWIN построить lDEFlX-диаграмму.

  3. Разработать 6-7 запросов для проектируемой информационной системы. Информация должна получаться из двух или более сущностей одновременно.

  4. Построить логическую модель базы данных.

  5. В среде заданной преподавателем СУБД разработать информационную систему.

Построение инфологической модели предметной области

Таблица сущностей.

Название сущности

Количество

Изменение количества сущностей

Идентификатор

Ограничение доступа

Тип связи

Кафедра

40

1%

Kafedra

Зав. каф., декан

1:М (Сотрудник)

1:М (Специальность)

Сотрудник

900

5%

Sotrudn

Зав. каф.

1:1 (Преподаватель)

1:1 (Инженер)

М:1 (Кафедра)

Преподаватели

600

4%

Prepod

Зав. каф

1:1 (Сотрудник)

1:М (Расписание)

Инженеры

300

6%

Ingener

Зав. каф

1:1 (Сотрудник)

Расписание

800

100%

Raspis

Зав. каф., декан

1:1 (Преподаватель)

1:1 (Группа)

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

50

2%

Spec

Зав. каф

1:1 (Кафедра)

1:1 (Группа)

Группа

300

20%

Gruppa

Зав. каф., декан

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

1:М (Расписание)

Примечание.

Название сущности – название выделенной в предметной области сущности.

Количество – предлагаемое количество экземпляров сущности.

Изменение количества сущностей – процент изменения сущностей в единицу времени (в таблице за единицу времени взят 1 год).

Идентификатор – имя файла данных в базе данных, в котором будут храниться экземпляры данной сущности.

Ограничение доступа – список пользователей, которым разрешен доступ к данной сущности.

Тип связи – тип связи для каждой сущности, с которой связана данная сущность.

Таблицы атрибутов

В рассмотренном ниже примере приведены таблицы атрибутов только для двух сущностей: КАФЕДРА и СОТРУДНИК.

Таблица атрибутов сущности КАФЕДРА

Имя атрибута

Формат

Область допустимых значений

Ограничение доступа

Роль атрибута

Название каф.

Симв. 30

Зав.каф., декан

Ключ

ФИО_зав.каф.

Симв. 35

Зав.каф., декан

Возможный

ключ

Телефон

Числ. 6

100000-999999

Зав.каф., декан

Выпускающая?

Лог. 1

Да/Нет

Зав.каф., декан

Таблица атрибутов сущности СОТРУДНИК

Имя атрибута

Формат

Область допустимых значении

Ограничение доступа

Роль атрибута

Таб.номер

Часл. 4

0-9999

Зав.каф.

Ключ

Название каф.

Симв. 30

Зав.каф.

Атрибут для связки

ФИО

Симв.35

Зав.каф.

Список запросов

  1. По фамилии заведующего кафедрой выдать список ее сотрудников.

  2. По фамилии сотрудника выдать фамилию заведующего кафедрой.

  3. По номеру специальности выдать телефон выпускающей кафедры.

  4. По названию кафедры выдать ученую степень и ученое звание всех ее преподавателей.

  5. По фамилии заведующего кафедрой выдать фамилии старост и кураторов групп.

  6. Для заданного дня недели, номера недели и аудитории выдать фамилии все преподавателей, которые ведут в этой аудитории занятия.

  7. По названию дисциплины выдать номера специальностей, для которых эта дисциплина читается.

  8. Определить все дисциплины, которые читают преподаватели с заданной ученой степенью.

  9. Выдать все группы, у которых ведут занятия преподаватели заданной кафедры.

  10. По фамилии старосты выдать фамилию заведующего кафедрой.