|
Основы проектирования баз данных — копия (2) (1). Нормальные формы Нормальные формы
Нормальные формы Нормальные формы Рассмотрим в качестве предметной области некоторую организацию, выполняющую ряд проектов. Модель предметной области опишем следующим образом: - Сотрудники организации выполняют проекты;
- Проекты состоят из нескольких заданий;
- Каждый сотрудник может участвовать в одном или нескольких проектах или временно не участвовать ни в каких проектах;
- Над каждым проектом могут работать несколько сотрудников (проект поделен на задания) или временно проект может быть приостановлен, тогда над ним не работает ни один сотрудник;
- Над каждым заданием в проекте работает один сотрудник;
- Каждый сотрудник числится в одном отделе;
- В каждом отделе имеется телефон;
- О каждом сотруднике необходимо хранить табельный номер и фамилию. Табельный номер является уникальным;
- Каждый отдел имеет уникальный номер;
- Каждый проект имеет номер и наименование;
- Каждое задание из проекта имеет номер, уникальный в пределах проекта. Задания в разных проектах могут иметь одинаковые номера.
Первая нормальная форма Первая нормальная форма Отношение находится в первой нормальной форме (1НФ) тогда и только тогда, когда любое значение каждого кортежа (экземпляра) для каждого атрибута содержит только одно значение. На первом этапе моделирования данные хранятся в одном отношении, имеющем следующие атрибуты: Проектные работы (ном_сотр, фамилия, ном_отд, ном_проекта, наименование, ном_задания, телефон) Т. к. сотрудник в каждом проекте выполняет ровно одно задание, то в качестве потенциального ключа отношений, необходимо взять пару атрибутов {ном_сотр, ном_проекта} Аномалии обновления Аномалии обновления Данные в отношении «Проектные работы» хранятся с большой избыточностью (повторяются фамилии, телефоны, названия проектов). Кроме того, в отношении хранятся независимые друг от друга данные (о сотрудниках, о проектах, об объектах). Аномалия вставки: Нельзя добавить строку 5, Ромашкин, 13, null, null, null, 33-44-55, т. к. атрибут ном_проекта входит в состав ключа и поэтому не может иметь нулевое значение. Аномалия обновления: фамилии сотрудников, названия проектов повторяются многократно, поэтому если например изменить название проекта Волонтер, то такие изменения необходимо выполнить одновременно во всех местах, где встречается данное название. Аномалия удаления: если уволить сотрудницу Сидорову И. Н., то будет потеряна информация о проекте Реклама. Вывод: Логическая модель данных не адекватна модели предметной области. БД основанная на такой модели будет работать некорректно. Отношение «Проектные работы» находится в 1НФ, при этом логическая модель данных неадекватна модели предметной области. Таким образом первой нормальной формы недостаточно для правильного моделирования данных. Зависимость атрибутов от ключа отношения: {ном_сотр, ном_проекта} -> Фамилия {ном_сотр, ном_проекта} -> ном_отдела {ном_сотр, ном_проекта} -> наименование {ном_сотр, ном_проекта} -> ном_задания {ном_сотр, ном_проекта} -> телефон Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника: {ном_сотр} -> фамилия {ном_сотр} -> ном_отдела {ном_сотр} -> телефон Зависимость наименования проекта от номера проекта: {ном_проекта} -> наименование Вторая нормальная форма Вторая нормальная форма Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от его первичного ключа. Отношение «Проектные работы» не находятся во 2НФ, т. к. есть неключевые атрибуты, зависящие от части сложного ключа. {ном_сотр} -> фамилия {ном_сотр} -> ном_отдела {ном_сотр} -> телефон {ном_проекта} -> наименование Для того, чтобы устранить зависимость атрибутов от части сложного ключа, нужно произвести декомпозицию отношения на несколько отношений, причем те атрибуты, которые зависят от части сложного ключа выносятся в отдельные отношения. Вывод: Логическая модель данных неадекватна модели предметной области. Ном_сотр
| Фамилия
| Ном_отдела
| Телефон
| 1
| Иванов И. И.
| 11
| 11-22-33
| 2
| Петров Н. Н.
| 11
| 11-22-33
| 3
| Сидорова И. Н.
| 12
| 22-33-44
| 4
| Солнцева О. С.
| 13
| 33-44-55
| Ном_проекта
| Наименование
| 212
| Чистый город
| 222
| Волонтер
| 232
| Реклама
| Ном_сотр
| Ном_проекта
| Ном_задания
| 1
| 212
| 01
| 1
| 222
| 01
| 2
| 222
| 02
| 3
| 232
| 01
| 3
| 212
| 02
| 4
| 222
| 02
| Третья нормальная форма Третья нормальная форма Отношение находится в третьей нормальной форме тогда и только тогда, когда оноо находится во второй нормальной форме и ни один неключевой атрибут не является транзитивно зависимым от его первичного ключа. Отношение «Сотрудники» не находится в 3НФ, т. к. имеется функциональная зависимость неключевых атрибутов: ном_отд -> телефон. Для того, чтобы устранить зависимость неключевых атрибутов нужно произвести декомпозицию отношения на несколько отношений, причем те неключевые атрибуты, которые являются зависимыми, выносятся в отдельные отношения. Ном_отдела
| Телефон
| 11
| 11-22-33
| 12
| 22-33-44
| 13
| 33-44-55
| Ном_сотр
| Фамилия
| Ном_отдела
| 1
| Иванов И. И.
| 11
| 2
| Петров Н. Н.
| 11
| 3
| Сидорова И. Н.
| 12
| 4
| Солнцева О. С.
| 13
| Ном_проекта
| Наименование
| 212
| Чистый город
| 222
| Волонтер
| 232
| Реклама
| Ном_сотр
| Ном_проекта
| Ном_задания
| 1
| 212
| 01
| 1
| 222
| 01
| 2
| 222
| 02
| 3
| 232
| 01
| 3
| 212
| 02
| 4
| 222
| 02
| Ном_отдела
| Телефон
| 11
| 11-22-33
| 12
| 22-33-44
| 13
| 33-44-55
| Ном_сотр
| Фамилия
| Ном_отдела
| 1
| Иванов И. И.
| 11
| 2
| Петров Н. Н.
| 11
| 3
| Сидорова И. Н.
| 12
| 4
| Солнцева О. С.
| 13
| Вывод: Т. о. все обнаруженные аномалии устранены. Реляционная модель состоит из четырех отношений: Сотрудники, Проекты, Отделы, Задания, которые находятся в 3НФ, являются адекватной описанной модели предметной области. |
|
|