Автор: Пользователь скрыл имя, 27 Октября 2011 в 20:54, реферат
Аномалии.
1) Избыточность данных (повторение одной и той же информации).
2) Обновления (например, изменение адреса завода ведет к модификации множества записей).
3) Удаления (при удалении последнего трансформатора, выпускаемого на каком-то заводе, теряется информация о самом заводе).
4) Включения (например, при включении нового типа нужно сразу описывать все атрибуты).
2.3. Нормализация отношений
Если рассмотреть
кортежи полученного для
|
Аномалии.
1) Избыточность данных (повторение одной и той же информации).
2) Обновления (например, изменение адреса завода ведет к модификации множества записей).
3) Удаления (при удалении последнего трансформатора, выпускаемого на каком-то заводе, теряется информация о самом заводе).
4)
Включения (например, при включении
нового типа нужно сразу
В общем случае база данных состоит из множества отношений, оперируя с которыми можно получать новые отношения. Нормализация отношений – это пошаговый обратимый процесс разложения исходных отношений на более мелкие.
Состав атрибутов должен обеспечивать:
-
отсутствие нежелательных
-
минимальное дублирование
Функциональная зависимость атрибутов.
Если в любой момент времени каждому значению атрибута А соответствует не более, чем одно значение атрибута В, говорят, что В функционально зависит от А
А→В
Понятно, что если отношение находится в 1НФ, то все атрибуты зависят от ключа.
Если неключевой атрибут зависит от всего ключа, то говорят о полной функциональной зависимости, если от части – о частичной зависимости.
Для рассматриваемого примера в качестве набора ключевых атрибутов выступают «Тип, Uв, Uн», но остальные атрибуты зависят только от «Типа», то есть речь идет о частичной зависимости.
Отношение
находится во второй нормальной форме
(2НФ), если оно находится в 1НФ и
отсутствует частичная
Для перехода ко 2НФ нужно:
а) построить
проекцию без атрибутов, которые
находятся в частичной
б) построить проекцию на часть ключа и атрибута от нее зависящие.
Таким образом исходное отношение «Трансформатор» может быть разложено на два отношения:
ТР1( Тип, Uв, Uн)
ТР2(
Тип, Sном, Длина, Ширина,
Высота, Завод, Адрес).
|
|
Соединение
этих отношений по типу даст исходное
отношение.
Транзитивная зависимость атрибутов.
Если атрибут В зависит от атрибута А, а атрибут С от атрибута В, то атрибут С транзитивно зависит от атрибута А.
А→В, В→С – транзитивная зависимость.
Отношения
находится в 3НФ, если они находится
во 2НФ и в них отсутствуют
В рассматриваемом отношении атрибут Адрес завода транзитивно зависит от атрибута Тип. Поэтому для перехода к 3НФ отношение
ТР2( Тип, Sном, Длина, Ширина, Высота, Завод, Адрес)
должно быть разложено на два
ТР2_1(Тип, Sном, Длина, Ширина, Высота, Завод)
ТР2_2(Завод, Адрес).
Обратный переход
осуществляется их соединением по атрибуту
«Завод».
Многозначная зависимость.
Если каждому значению атрибута А соответствует множество значений атрибута В, никак не связанных с другими атрибутами.
А→→В.
4НФ – отношения находятся в 3-ей НФ но в нем отсутствуют многозначные зависимости.
В
рассматриваемом примере Uв и Uн многозначно
зависят от типа.
Общее правило нормализации.
Если отношение в отношении R(x,y,z) имеют место зависимости x→y или x→→y, то R можно разложить в R1(x,y) и R2(x,z), а R естественное соединение R1 и R2.
Например, отношение
Обучение(Таб. №, ФИО, Предмет, Часы, Группа, Семестр, Должность, Зарплата, Кафедра, Телефон_Кафедры),
содержащее
разные зависимости, может быть разложено
на отношения:
Преподаватель (Таб. №, ФИО, Должность, Кафедра)
Кафедра (Кафедра, Телефон_Кафедры)
Оклад (Должность, Зарплата)
Расписание (Таб. №, Предмет, Группа, Семестр),
Программа
(Предмет, Группа, Семестр, Часы).
4.2.2. 1NF - первая нормальная форма.
Для обсуждения первой нормальной формы необходимо дать два определения:
Простой атрибут - атрибут, значения которого атомарны (неделимы).
Сложный атрибут - получается соединением нескольких атомарных атрибутов, которые могут быть определены на одном или разных доменах. (его также называют вектор или агрегат данных).
Теперь можно дать
Определение первой нормальной формы:
отношение находится в 1NF если значения всех его атрибутов атомарны.
Рассмотрим пример, заимствованный из уже упоминавшейся статьи Е.Ф.Кодда:
В базе данных отдела кадров предприятия необходимо хранить сведения о служащих, которые можно попытаться представить в отношении
СЛУЖАЩИЙ(НОМЕР_СЛУЖАЩЕГО, ИМЯ, ДАТА_РОЖДЕНИЯ, ИСТОРИЯ_РАБОТЫ, ДЕТИ).
Из внимательного
рассмотрения этого отношения следует,
что атрибуты "история_работы"
и "дети" являются сложными, более
того, атрибут "история_работы"
включает еще один сложный атрибут "история_зарплаты".
Данные агрегаты выглядят следующим образом:
· ИСТОРИЯ_РАБОТЫ (ДАТА_ПРИЕМА, НАЗВАНИЕ, ИСТОРИЯ_ЗАРПЛАТЫ),
· ИСТОРИЯ_ЗАРПЛАТЫ (ДАТА_НАЗНАЧЕНИЯ, ЗАРПЛАТА),
· ДЕТИ (ИМЯ_РЕБЕНКА, ГОД_РОЖДЕНИЯ).
Их связь представлена на рис. 4.3.
Рис.4.3. Исходное отношение.
Для приведения исходного отношения СЛУЖАЩИЙ
к первой нормальной форме необходимо
декомпозировать его на четыре отношения,
так как это показано на следующем рисунке:
Рис.4.4. Нормализованное множество отношений.
Здесь первичный ключ каждого отношения выделен синей рамкой, названия внешних ключей набраны шрифтом синего цвета. Напомним, что именно внешние ключи служат для представления функциональных зависимостей, существующих в исходном отношении. Эти функциональные зависимости обозначены линиями со стрелками.
Алгоритм нормализации описан Е.Ф.Коддом следующим образом:
4.2.3. 2NF - вторая нормальная форма.
Очень часто первичный ключ отношения включает несколько атрибутов (в таком случае его называют составным) - см., например, отношение ДЕТИ, показанное на рис. 4.4. При этом вводится понятие полной функциональной зависимости.
Определение:
неключевой
атрибут функционально полно зависит
от составного ключа если он функционально
зависит от всего ключа в целом, но не находится
в функциональной зависимости от какого-либо
из входящих в него атрибутов.
Пример:
Пусть имеется
отношение ПОСТАВКИ (N_ПОСТАВЩИКА, ТОВАР,
ЦЕНА).
Поставщик может поставлять различные
товары, а один и тот же товар может поставляться
разными поставщиками. Тогда ключ отношения
- "N_поставщика +
товар". Пусть все поставщики поставляют
товар по одной и той же цене. Тогда имеем
следующие функциональные зависимости: