Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
15.04.2015
Размер:
47.53 Кб
Скачать

Лекция 10. Нормализация отношений (часть 1).

План лекции

  1. Определение нормализации.

  2. Универсальное отношение.

  3. Проблемы, вызванные использованием универсального отношения: вставки, обновления, удаления.

  4. Виды нормальных форм.

  5. Определение первой нормальной формы.

  6. Функциональные зависимости .

  7. Полная функциональная зависимость.

  8. Определение второй нормальной формы.

  9. Транзитивная зависимость.

  10. Определение третьей нормальной формы.

  11. Примеры нормализации.

Нормализация – разбиение одного отношения на два или более, в соответствии со специальной процедурой.

Разработчик БД должен обнаруживать потенциально опасные отношения и нормализовать их.

Универсальное отношение.

Рассмотрим пример.

Необходимо разработать БД для библиотеки.

Обозначения:

СНОМ – номер сотрудника.

СФАМ – фамилия сотрудника.

ЛНОМ – номер лаборатории.

ТНОМ – номер телефона лаборатории.

ШКН – шифр книги.

ДАТА – дата сдачи книги в библиотеку.

СТКН – стоимость книги.

Замечания:

  • сотрудник находится в одной лаборатории,

  • в одной лаборатории работает несколько сотрудников;

  • в лаборатории имеется только один телефон.

Таблица 14 Читатель

СНОМ

СФАМ

ЛНОМ

ТНОМ

ШКН

ДАТА

СТКН

3215

Иванов

120

2136

122

120

230

Д1

Д2

Д3

90,00

70,00

55,00

3462

Петров

238

2344

122

123

Д1

Д2

90,00

85,50

3567

Сидоров

120

2136

239

141

Д1

Д2

150,00

120,00

4735

Николаев

345

3321

398

Д1

40,00


Данная таблица не является нормализованным отношением. Почему?

Выделим первую строку: СНОМ=3215. Значение четырех полей СНОМ, СФАМ, ЛНОМ, ТНОМ являются атомарными (неделимыми), в то время как значения в полях ШКН, ДАТА, СТКН множественные.

Преобразуем эту таблицу так, чтобы каждый элемент в строке имел атомарное значение. Это достигается с помощью простого процесса вставки недостающих (избыточных) значений.

Таблица 14 Читатель

СНОМ

СФАМ

ЛНОМ

ТНОМ

ШКН

ДАТА

СТКН

3215

3215

3215

Иванов

Иванов

Иванов

120

120

120

2136

2136

2136

122

120

230

Д1

Д2

Д3

90,00

70,00

55,00

3462

3462

Петров

Петров

238

238

2344

2344

122

123

Д1

Д2

90,00

85,50

3567

3567

Сидоров

Сидоров

120

120

2136

2136

239

141

Д1

Д2

150,00

120,00

4735

Николаев

345

3321

398

Д1

40,00

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

Проблемы, вызванные использованием универсального отношения

Вопрос: зачем необходимо разбивать отношение ЧИТАТЕЛЬ на более мелкие отношения, если оно содержит в себе все необходимые данные?

Проблема вставки. Если в библиотеку записался новый сотрудник, еще не взявший ни одной книги, то для него необходимо включить в табл. кортеж с пустыми значениями атрибутов ШКН, ДАТА, СТКН.

Таблица оказывается частично заполненной – лишний объем памяти.

Проблема обновления (модификации).

Явная избыточность. СФАМ, ЛНОМ, ТНОМ появляются в таблице многократно. Если Иванов перешел в другую лабораторию, то библиотекарь будет вынужден проследить изменение номера лаборатории и телефона во всех строках.

Неявная избыточность. Один и тот же номер телефона имеют сотрудники в одной лаборатории: Иванов и Сидоров.

Пусть Иванов извещает библиотекаря о том, что его номер телефона изменился на 7777, забыв при этом сообщить, что у его соседа (Сидорова) так же изменился номер.

Если библиотекарь изменит номер только у Иванова, то лаборатории 120 будут соответствовать уже 2 телефона.

Проблема удаления. В отношении ЧИТАТЕЛЬ присутствует 1 кортеж СНОМ=4735.

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

Виды нормальных форм Определение первой нормальной формы (1нф)

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

Например, атрибут Адрес, содержащий не только название улицы, но и название города, страны и почтовый адрес, атомарным не является. Такие атрибуты нужно разбить на ряд атрибутов, для того чтобы таблица полностью соответствовала первой нормальной форме.

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

Например, у человека может быть несколько телефонов и для хранения их номеров мы создаем в сущности ряд однотипных атрибутов: Телефон1, Телефон2, Телефон3 и т. д.

Аналогично у сотрудника может быть несколько детей и поэтому мы создадим сущность с атрибутами: Ребенок1, Ребенок2, …. Именно эти дополнительные столбцы называются повторяющейся группой.

Нарисуйте таблицу, которая будет содержать несколько однотипных столбцов и попытайтесь заполнить ее данными. Через некоторое время вы обнаружите, что в некоторых строках все поля будет заполнены, а в других стоках они заполнены частично. Может оказаться, что полей не хватает. Например, для регистрации детей создано три атрибута, а фактически детей четверо. Как зафиксировать в БД четвертого ребенка? Можно, например, изменить структуру таблицы, а также приложений, которые обращаются к этой таблице.

Если вы обнаружили в отношении повторяющуюся группу, то перенесите эти атрибуты в отдельную сущность!

Рис.1 . Исходная сущность

Нормализуем отношение. Извлекаем данные о телефонах и помещаем их в отдельную сущность, Эта сущность становится подчиненной.

Рис. 2. Неидентифицирующее отношение

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

Рис. 3. Идентифицирующее отношение

Функциональные зависимости (ФЗ). При нормализации данных необходимо использовать концепцию функциональных зависимостей между атрибутами универсального отношения.

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

X и Y могут быть составными, т.е. они могут представлять не единичные атрибуты, а группы состоящие из двух или более атрибутов.

Обозначения ФЗ:

X Y или

Найдем в отношении читатель ФЗ.

СНОМ  СФАМ

СНОМ  ЛНОМ

СНОМ  ТНОМ

ЛНОМ  ТНОМ

ТНОМ  ЛНОМ

ШКН  СТКН

ДАТА не имеет функциональной зависимости с другими атрибутами.

Полная ФЗ. Атрибут Y находится в полной ФЗ от атрибута X, если он функционально зависит от X и не зависит функционально от любого подмножества X.

Это определение применяется в том случае, если X – составной атрибут.

Рассмотрим отношение «Поставщик_ Поставка»

Обозначения:

ПОСТ – поставщик

СТ – статус поставщика

ГОР – город

ПКА – поставка

КВО – количество

Таблица 15 Поставщик_ Поставка

ПОСТ #

СТ

ГОР

ПКА #

КВО

П1

П1

П1

П1

П1

П1

П2

П2

П3

П4

П4

П4

20

20

20

20

20

20

10

10

10

20

20

20

Лондон

Лондон

Лондон

Лондон

Лондон

Лондон

Париж

Париж

Париж

Лондон

Лондон

Лондон

ПО1

ПО2

ПО3

ПО4

ПО5

ПО6

ПО1

ПО2

ПО2

ПО2

ПО4

ПО5

300

200

400

200

100

100

500

400

400

150

120

110

Просматривая это отношение выделим ФЗ:

ПОСТ СТ

ПОСТ ГОР

ГОР СТ

СТ ГОР

ПКА – не имеет ФЗ

ПОСТ, ПКА КВО полная ФЗ.

Рис.4. Пример полной функциональной зависимости

Рассмотрим проблемы универсального отношения.

Вставка:

Не можем включить поставщика П5 находящегося в г. Афины. Причина поле ПОСТ является частью первичного ключа не указав второй части не можем записать в кортеж.

Удаление:

Если удаляем един. кортеж П3 и ПО2, то теряем информацию о поставщике.

Обновление:

Если поставщик меняет адрес, то нужно менять этот адрес в нескольких записях.

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

Рис.5. Пример разделения таблицы универсального отношения

Рис.6. Разделение рисунка

Поясним преимущества разбиения на 2 отношения.

  1. Вставка. Поставщик П5 добавлен отдельным кортежем, в отношение поставщик. Эта вставка может быть осуществлена и в том случае, если поставщик П5 не поставил поставок.

  2. Обновление. Исходные данные о поставщике появляются в отношении поставщик один раз.

  3. Удаление. Мы можем удалить любую поставку, но сведения при этом о поставщике сохраняются.

Соседние файлы в папке Консп. лекций