Теория нормализации (презентация)

advertisement


устранение дублирования информации;
решение проблемы “присоединенных
записей”.
Почему дублирование информации – это
плохо?
 Лишний расход памяти.
 Проблемы с корректировкой данных.
Сотрудники
ТабельныйНом
ФИО
НомОтдела
НазОтдела
100
Иванов И.И
5
Отдел
маркетинга
101
Петров П.П.
2
Отдел кадров
105
Сидоров С.С.
5
Отдел
маркетинга
113
Новиков Н.Н.
2
Отдел кадров
128
Воробьев В.В.
2
Отдел кадров
Сотрудники
ТабельныйНом
ФИО
НомОтдела
НазОтдела
100
Иванов И.И
5
Отдел
маркетинга
101
Петров П.П.
2
Отдел кадров
105
Сидоров С.С.
5
Отдел
маркетинга
Пусть требуется добавить новый отдел с номером 10
и названием «Отдел логистики». Как это сделать в
текущей таблице?
Таблицу «Сотрудники» следует разбить на 2
проекции:
Сотрудники2(ТабельныйНом, ФИО, НомОтдела)
Отдел (НомОтдела, НазОтдела)
Если к этим проекциям применить операцию join,
то получим исходную таблицу.
Полная декомпозиция таблицы – это набор
произвольного числа ее проекций, соединение
которых идентично исходной таблице.
Процесс нормализации заключается в переходе от
исходной таблицы к ее полной декомпозиции
вплоть до получения таблиц в пятой нормальной
форме.
Таблица находится в 1НФ тогда и только
тогда, когда в каждом ее поле (на
пересечении строки и столбца) находится
ровно одно значение (не более одного и не
ноль значений).
Специально для выполнения этого
требования придумано значение NULL.
Пример нарушения 1НФ: в поле
НомерТелефона указано несколько
номеров через запятую.
НомОтдела
НазОтдела
НомерТелефона
2
Отдел маркетинга
111-111, 123-123
5
Отдел кадров
234-567, 222-333
Что делать? Создать новую таблицу для многозначного
атрибута, в которую нужно добавить исходный
первичный ключ
НомОтдела
НазОтдела
2
Отдел
маркетинга
5
Отдел
кадров
НомОтдела
НомерТелефона
2
111-111
2
123-123
5
234-567
5
222-333
Пусть X и Y – списки полей таблицы. Говорят, что Y
функционально зависит от X, если каждому
значению X соответствует единственное значение
Y. Обозначают X->Y.
Любое неключевое поле функционально зависит от
первичного ключа!
Пусть X и Y – списки полей таблицы. Говорят,
что Y находится в полной функциональной
зависимости от X, если:
 Y функционально зависит от X;
 Y функционально не зависит ни от какого
подмножества X, не совпадающего с X.
Заказы (НомерЗаказа, НомерТовара,
ОписаниеТовара, Количество)
Поле «ОписаниеТовара» зависит от части
ключа «НомерТовара», т.е., не находится в
полной функциональной зависимости от
первичного ключа таблицы.
Таблица находится в 2НФ тогда и только тогда,
когда каждое неключевое поле таблицы
связано полной функциональной зависимостью
с первичным ключом.
Пример нарушения 2НФ: рассмотрим таблицу:
Заказы (НомерЗаказа, НомерТовара,
ОписаниеТовара, Количество)
Поле «ОписаниеТовара» зависит от части ключа
«НомерТовара», т.е., не находится в полной
функциональной зависимости от первичного
ключа таблицы, требования 2НФ нарушаются.
Что делать?
Теорема Хита (устанавливает связь между
функциональной зависимостью и полной
декомпозицией таблицы).
Пусть список столбцов таблицы разбит на 3
непересекающиеся части: H, J, K. Если K
функционально зависит от J, то выполняется
утверждение:
Таблица =
proj H, J (Таблица)
join
proj J, K (Таблица)
Заказы (НомерЗаказа, НомерТовара,
ОписаниеТовара, Количество)
Поле «ОписаниеТовара» зависит от части
ключа «НомерТовара».
Положим J=«НомерТовара», K=
«ОписаниеТовара», H=остальные столбцы,
применим теорему Хита. Получим 2
проекции:
Заказы2 (НомерЗаказа, НомерТовара,
Количество)
Товары(НомерТовара, ОписаниеТовара,)
Таблица находится в 3НФ тогда и только тогда,
когда она находится во 2НФ, и не существует
функциональных зависимостей между
неключевыми полями.
Пример нарушения 3НФ: рассмотрим таблицу:
Сотрудники (ТабельныйНомер, ФИО,
НомерОтдела, НазваниеОтдела)
НазваниеОтдела функционально зависит от
НомерОтдела т.е, от неключевого поля. Такие
зависимости называются транзитивными.
Применяя теорему Хита, разобьем эту таблицу на 2
проекции:
Сотрудники2 (ТабельныйНомер, ФИО, НомерОтдела)
Отделы (НомерОтдела, НазваниеОтдела)
Примечание: Обычно на практике достаточно
ограничиться таблицами в 3НФ, остальные
нормальные формы нарушаются редко и
представляют только теоретический
интерес.
Таблица находится в НФБК тогда и только тогда,
когда любая функциональная зависимость
сводится к полной функциональной
зависимости от первичного ключа (т.е., нет
функциональных зависимостей ключевых
полей от неключевых).
Пример нарушения НФБК: рассмотрим таблицу
(предполагается, что нет одинаковых городов):
Адреса (Индекс, Город, Улица)
Город функционально зависит от Индекс.
Разбивать такую таблицу на 2 проекции не стоит.
Лучше смириться с таким нарушением.
Таблица находится в 4НФ тогда и только
тогда, когда в каждой ее полной
декомпозиции, состоящей из двух
проекций, каждая проекция содержит
первичный ключ исходной таблицы.
Пример нарушения 4НФ: рассмотрим
таблицу Сотрудник
ФИО
ИнострЯзык
ИмяРебенка
Смит
Немецкий
Джон
Смит
Немецкий
Мэри
Смит
Русский
Джон
Смит
Русский
Мэри
Это нарушение происходит из-за того, что два
множественных атрибута объекта (т.е., такие
атрибуты, которых у каждого объекта может
быть несколько) поместили в одну и ту же
таблицу, в то время как для каждого
множественного свойства нужно создавать
отдельную таблицу
Исходную таблицу нужно разбить на две
проекции:
ФИО
ИнострЯзык
ФИО
ИмяРебенка
Смит
Русский
Смит
Джон
Смит
Немецкий
Смит
Мэри
Таблица находится в 5НФ тогда и только
тогда, когда в каждой ее полной
декомпозиции каждая проекция содержит
первичный ключ исходной таблицы.
Download