Управл_данными / 06-Норм_Формы
.pdfПроектирование Баз Данных
Проектирование реляционных БД на основе принципов нормализации.
(часть 2)
Зудилин А.Э. 2013
Исходная ненормализованная таблица
|
|
|
Преподаватели |
|
|
|
|
|
ФИО |
Должн |
Оклад |
Стаж |
Д_Стаж |
Каф |
Предм Группа |
ВидЗан |
|
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
БД |
1 |
Практ, |
|
|
|
|
|
|
|
|
Лекц |
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
Инф |
1 |
Практ |
Петров П.П. |
ст.преп |
800 |
7 |
100 |
5 |
БД |
2 |
Лекц |
Петров П.П. |
ст.преп |
800 |
7 |
100 |
5 |
ГИС |
2 |
Практ |
Сидоров С.С. |
Преп |
500 |
10 |
150 |
5 |
Инф |
1 |
Лекц |
Сидоров С.С. |
Преп |
500 |
10 |
150 |
5 |
ГИС |
2 |
Лекц |
Егоров В.В. |
Преп |
500 |
5 |
100 |
4 |
Матем |
1 |
Лекц |
Составной ключ из трех полей: ФИО + Предм + Группа
Исходная таблица содержит избыточное дублирование, которое является причиной аномалий редактирования.
2
Выявление зависимостей
ФИО --> Оклад |
ФИО --> Должн |
ФИО --> Д_Стаж |
ФИО --> Каф |
Стаж --> Д_Стаж |
Должн --> Оклад |
Оклад --> Должн |
ФИО.Предм.Группа --> ВидЗан |
Ключом для таблицы “Преподаватели” является сочетание трех атрибутов: ФИО, Предм и Группа, т.к. мы предполагаем, что каждый преподаватель в одной группе по одному предмету может либо читать лекции, либо проводить практические занятия.
3
Наряду с полной зависимостью от ключа (ФИО.Предм.Группа --> ВидЗан), существует несколько частичных зависимостей, в которых атрибуты Оклад, Должн, и др. находятся в функциональной связи с атрибутом ФИО, являющимся частью ключа.
Эта частичная зависимость от ключа приводит к избыточному дублированию , а значит и к аномалиям.
Кроме того, есть две транзитивные зависимости
ФИО --> Должн --> Оклад и ФИО --> Стаж --> Д_Стаж
Устранение избыточностей производится в несколько этапов путем последовательного перевода таблиц в нормальные формы более высокого порядка.
4
1НФ
–первая нормальная форма
Отношение (таблица) находится в 1НФ если атрибуты имеют простые (атомарные) значения
Приводим в соответствие с этим правилом поле ВидЗан :
|
|
|
Преподаватели (1НФ) |
|
|
|
||
ФИО |
Должн |
Оклад |
Стаж |
Д_Стаж |
Каф |
Предм Группа |
ВидЗан |
|
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
БД |
2 |
Практ |
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
БД |
2 |
Лекц |
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
Инф |
1 |
Практ |
Петров П.П. |
ст.преп |
800 |
7 |
100 |
5 |
БД |
2 |
Лекц |
Петров П.П. |
ст.преп |
800 |
7 |
100 |
5 |
ГИС |
2 |
Практ |
Сидоров С.С. |
Преп |
500 |
10 |
150 |
5 |
Инф |
1 |
Лекц |
Сидоров С.С. |
Преп |
500 |
10 |
150 |
5 |
ГИС |
2 |
Лекц |
Егоров В.В. |
Преп |
500 |
5 |
100 |
4 |
Матем |
3 |
Лекц |
5
2НФ
– вторая нормальная форма
Отношение находится в 2НФ, если оно находится в 1НФ, и нет частичных зависимостей от ключа.
Не соответствовать 2НФ могут только те отношения, у которых составной ключ (состоящий из двух и более атрибутов).
В нашем примере составной ключ (ФИО+Предм+Группа ) и присутствует несколько частичных зависимостей атрибутов от ключа.
Таблица Преподаватели не соответствует 2НФ !
6
Зависимости атрибутов
|
|
|
Преподаватели |
|
|
|
|
|
ФИО |
Должн |
Оклад |
Стаж |
Д_Стаж |
Каф |
Предм Группа |
ВидЗан |
|
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
БД |
2 |
Практ |
… |
… |
… |
… |
… |
… |
… |
… |
… |
Виды зависимостей:
Полная зависимость:
Ключ->ВидЗан
Частичная зависимость:
Ключ->Каф , …
Транзитивная зависимость:
ФИО->Оклад, ФИО->Д_Стаж
7
Результат приведения к 2НФ
Разбиение на две связанные таблицы R1 и R2, каждая из которых в 2НФ :
|
R1 |
|
|
|
|
|
|
|
ФИО |
|
Предм |
Группа |
ВидЗан |
||
|
Иванов И.И. |
БД |
|
2 |
Практ |
||
|
Иванов И.И. |
БД |
|
2 |
Лекц |
||
|
Иванов И.И. |
Инф |
|
1 |
Практ |
||
|
Петров П.П. |
БД |
|
2 |
Лекц |
||
|
Петров П.П. |
ГИС |
|
2 |
Практ |
||
|
Сидоров С.С. |
Инф |
|
1 |
Лекц |
||
|
Сидоров С.С. |
ГИС |
|
2 |
Лекц |
||
R2 |
Егоров В.В. |
Матем |
|
3 |
Лекц |
||
|
|
|
|
|
|
|
|
ФИО |
Должн |
Оклад |
Стаж |
Д_Стаж Каф |
|
|
|
Иванов И.И. |
Преп |
500 |
5 |
100 |
5 |
|
ФИО |
|
|
||||||
Петров П.П. |
ст.преп |
800 |
7 |
100 |
5 |
|
|
Сидоров С.С. |
Преп |
500 |
10 |
150 |
5 |
|
|
Егоров В.В. |
Преп |
500 |
5 |
100 |
4 |
|
|
ФИО |
|
|
|
|
|
Предм |
|
ВидЗан |
Группа |
|
|
|
|
|
|
|
|
Оклад
Должн
Стаж |
|
Д_Стаж |
|
|
|
Каф
8
Исследование таблиц R1 и R2 показывает, что переход к 2НФ позволил исключить явную избыточность данных в таблице R2 – повторение строк со сведениями о преподавателях.
Однако в R2 по прежнему имеет место неявное дублирование данных Для дальнейшей оптимизации необходимо преобразовать R2 в 3НФ.
9
3НФ
– третья нормальная форма
Отношение находится в 3НФ, если оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Определение 2:
Отношение находится в 3НФ в том и только в том случае, если все неключевые атрибуты взаимно независимы и полностью зависят от первичного ключа.
Транзитивные зависимости от ключа порождают избыточное дублирование.
Их необходимо устранять.
10