Лекция-6_3

advertisement
6.3. Корректность операций над отношениями и нормализация отношений
6.3.1. Аномалии и избыточность
В БД должна поддерживаться целостность данных, то есть корректность и непротиворечивость
операций. Однако часто схема реляционной БД неудачна, так как не обеспечивает целостности
данных. Нарушения целостности называют аномалиями. Чаще всего аномалии возникают в двух
случаях: при избыточности отношений и при цикличности БД.
Рассмотрим нарушения вследствие избыточности на примере отношения R0 = СОТРУДНИКИ (Номер,
ДОЛЖ, ОКЛАД, ОТДЕЛ, ТЕЛ, ПРОЕКТ, Задание).
Ключ отношения - cоставной ключ Номер, Проект , так как каждый сотрудник может участвовать в
нескольких проектах и по каждому проекту иметь задание.
В этом отношении имеется избыточность: сведения о сотруднике повторяются столько раз, сколько
заданий он имеет.
Номер
Долж
Оклад
Отдел
Тел
Проект
Задание
1
Инж
200
15
1-15
А
А1
С
С3
А
А2
В
В25
Д
Д1
1
2
Инж
250
15
1-15
2
3
Лаб
150
20
2-20
Различают три вида аномалий:
1. при включении записи (нельзя записать в БД данные о сотруднике, который пока не участвует ни в
одном проекте);
2. при исключении записи (увольняя одного сотрудника, нужно удалить несколько записей, причем
теряются данные о работе, которую он выполнял);
3. при изменении записи (обновляя оклад сотрудника, нужно изменить не одну, а несколько записей,
чтобы они не противоречили друг другу).
Все эти аномалии связаны с избыточностью данного отношения.
Для устранения избыточности в реляционной теории применяют специальный аппарат нормализацию схем отношений.
6.3.2. Нормализация схем отношений
Классический подход к проектированию схемы реляционной БД состоит в последовательном
улучшении исходного представления предметной области в виде одного или нескольких отношений.
Форма представления схемы реляционной БД на каком-либо шаге этого процесса называется
нормальной формой. Каждой нормальной форме соответствует некоторый определенный набор
ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет
свойственному ей набору ограничений. Например, отношение находится в первой нормальной
форме (1НФ), если домены для каждого его атрибута являются атомарными. То есть, ограничение
первой нормальной формы: значения всех атрибутов отношения должны быть атомарными. Это
основное требование классической реляционной модели данных.
В теории реляционных баз данных обычно выделяется следующая последовательность нормальных
форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма
(3NF); нормальная форма Бойса-Кодда (BCNF); четвертая нормальная форма (4NF); пятая
нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF
Основные свойства нормальных форм:
• каждая следующая нормальная форма в некотором смысле улучшает свойства предыдущей;
• при переходе к следующей нормальной форме свойства предыдущих нормальных форм
сохраняются.
Методика нормализации состоит в декомпозиции отношения, находящегося в предыдущей
нормальной форме, в два или более отношения, удовлетворяющих требованиям следующей
нормальной формы.
Наиболее важные на практике нормальные формы отношений основываются на фундаментальном
понятии функциональной зависимости. Для дальнейшего изложения нам потребуются несколько
определений.
Определение 1: Функциональная зависимость. В отношении R атрибут Y функционально зависит
от атрибута X в том и только в том случае, если каждому значению X соответствует в точности одно
значение Y: X ->Y. Другими словами говорят, что X функционально определяет Y.
X и Y могут быть составными атрибутами, т.е. реально состоять из нескольких атомарных атрибутов.
Определение 2: Полная функциональная зависимость. Функциональная зависимость X -> Y
называется полной, если атрибут Y не зависит функционально от любого точного подмножества X
(точным подмножеством множества X называется любое его подмножество, не совпадающее с X).
Определение 3: Транзитивная функциональная зависимость. Функциональная зависимость X ->Y
называется транзитивной, если существует такой атрибут Z, что имеются функциональные
зависимости
X -> Z и Z -> Y.
Определение 4: Возможный ключ. Возможным ключом отношения называется его атомарный или
составной атрибут, значения которого полностью функционально определяют значения всех
остальных атрибутов отношения.
Определение 5: Неключевой атрибут. Неключевым атрибутом называется любой атрибут
отношения, не входящий в состав первичного ключа.
Определение 6: Взаимно независимые атрибуты. Два или более атрибута называются взаимно
независимыми, если ни один из них не зависит функционально от других атрибутов.
ПРИМЕР. Рассмотрим функциональные зависимости в отношении СОТР.
Первичный ключ:
НОМЕР, ПРОЕКТ
Функциональные зависимости:
НОМЕР -> ДОЛЖ неполные ФЗ (зависят от части ключа)
НОМЕР -> ОКЛАД - " HОМЕР -> ОТДЕЛ - " ОТДЕЛ -> ТЕЛ
НОМЕР -> ТЕЛ - неполная и транзитивная зависимость
НОМЕР, ПРОЕКТ ->ЗАДАНИЕ - полная ФЗ
Определение 7. Вторая нормальная форма. Отношение R находится во второй нормальной форме
(2NF) в том и только в том случае, когда находится в 1NF и каждый неключевой атрибут полностью
зависит от первичного ключа.
Определение 8. Третья нормальная форма. Отношение R находится в третьей нормальной форме
(3NF) в том и только в том случае, если находится в 2NF и каждый неключевой атрибут нетранзитивно
зависит от первичного ключа.
ПРИМЕР. Разобьем отношение СОТРУДНИКИ на два отношения - R2 и R3 - так, чтобы не было
неполных ФЗ:
R2 = РАСПРЕДЕЛЕНИЕ ПО ОТДЕЛАМ (НОМЕР, ДОЛЖ, ОКЛАД, ОТДЕЛ, ТЕЛ)
Первичный ключ:
НОМЕР
Функциональные зависимости:
НОМЕР -> ДОЛЖ
НОМЕР -> ОКЛАД
HОМЕР -> ОТДЕЛ
НОМЕР -> ТЕЛ
ОТДЕЛ -> ТЕЛ
R3 = УЧАСТИЕ В ПРОЕКТАХ (НОМЕР, ПРОЕКТ, ЗАДАНИЕ)
Первичный ключ:
НОМЕР, ПРОЕКТ
Функциональная зависимость:
НОМЕР, ПРОЕКТ ->ЗАДАНИЕ
Каждое из этих двух отношений находится в 2NF, и в них устранены отмеченные выше аномалии
(легко проверить, что все упомянутые выше операции выполняются без проблем).
Рассмотрим более пристально отношение R2. В нем имеется транзитивная зависимость НОМЕР ->
ТЕЛ, так как существуют также HОМЕР -> ОТДЕЛ, ОТДЕЛ -> ТЕЛ (считаем, что в отделе один
телефон). То есть избыточность сохранилась. При изменении номера телефона придется менять его
значение у всех сотрудников, при удалении данных о последнем сотруднике исчезнет информация о
номере телефона и отделе. Проведем дальнейшую декомпозицию отношения R2 на два отношения
СОТРУДНИКИ и ОТДЕЛЫ:
СОТРУДНИКИ (НОМЕР, ДОЛЖ, ОКЛАД,
ОТДЕЛ)
Первичный ключ:
НОМЕР
Функциональная зависимость:
НОМЕР -> ДОЛЖ
НОМЕР -> ОКЛАД
HОМЕР -> ОТДЕЛ
ОТДЕЛЫ (ОТДЕЛ, ТЕЛ)
Первичный ключ:
ОТДЕЛ
Функциональная
зависимость:
ОТДЕЛ -> ТЕЛ
Каждое из этих двух отношений находится в 3NF и свободно от отмеченных аномалий.
На практике третья нормальная форма схем отношений является достаточной в большинстве случаев,
поэтому приведением к этой форме обычно заканчивается процесс проектирования реляционной базы
данных. Однако иногда полезно продолжить процесс нормализации.
Определение 9. Детерминант. Детерминантом называется любой атрибут, от которого полностью
функционально зависит некоторый другой атрибут.
Определение 10. Нормальная форма Бойса - Кодда. Отношение R находится в нормальной форме
Бойса-Кодда (BCNF) в том и только в том случае, если каждый детерминант является возможным
ключом.
Замечание: Легко заметить, что если в отношении имеется только один возможный ключ (являющийся
первичным ключом), то это определение становится эквивалентным определению третьей
нормальной формы.
ПРИМЕР. Добавим в отношение УЧАСТИЕ В ПРОЕКТАХ еще один ключевой атрибут ФИО. Тогда
отношение (ФИО, НОМЕР, ПРОЕКТ, ЗАДАНИЕ) будет иметь два возможных ключа:
НОМЕР, ПРОЕКТ и ФИО,ПРОЕКТ.
Функциональные зависимости:
НОМЕР -> ФИО
ФИО -> НОМЕР
НОМЕР -> ПРОЕКТ
ФИО -> ПРОЕКТ
НОМЕР, ПРОЕКТ => ЗАДАНИЕ
ФИО, ПРОЕКТ => ЗАДАНИЕ
Эта схема находится в 3NF, однако возможны аномалии из-за того, что имеются функциональные
зависимости возможных ключевых атрибутов от части первичного ключа. Например, при изменения
фамилии сотрудника потребуется модифицировать несколько кортежей.
Выберем детерминант отношения - атрибут НОМЕР и разделим отношение на две части:
R1 = ФАМИЛИИ (НОМЕР, ФИО)
Возможные ключи: НОМЕР, ФИО.
Функциональные зависимости:
НОМЕР -> ФИО
ФИО -> НОМЕР
R2 = УЧАСТИЕ В ПРОЕКТАХ (НОМЕР, ПРОЕКТ, ЗАДАНИЕ).
Возможный ключ: НОМЕР, ПРОЕКТ
Функциональная зависимость: НОМЕР, ПРОЕКТ -> ЗАДАНИЕ
Оба полученных отношения находятся в БКНФ.
Определение 11. Многозначная зависимость. В отношении R (A, B, C) существует многозначная
зависимость A ->> B в том и только в том случае, если множество значений B, соответствующее паре
значений A и C, зависит только от A и не зависит от С.
В отношении УЧАСТИЕ В ПРОЕКТАХ существуют следующие две многозначные зависимости:
ПРОЕКТ ->> НОМЕР
ПРОЕКТ ->> ЗАДАНИЕ
Дальнейшая нормализация отношений, подобных отношению ПРОЕКТЫ, основывается на следующей
теореме:
Теорема Фейджина. Отношение R (A, B, C) можно спроецировать без потерь в отношения R1 (A, B) и
R2 (A, C) в том и только в том случае, когда существует многозначная зависимость A ->> B | C.
Под проецированием без потерь понимается такой способ декомпозиции отношения, при котором
исходное отношение полностью и без избыточности восстанавливается путем естественного
соединения полученных отношений.
Определение 13. Четвертая нормальная форма. Отношение R находится в четвертой нормальной
форме (4NF) в том и только в том случае, если в случае существования многозначной зависимости A >> B все остальные атрибуты R функционально зависят от A.
ПРИМЕР. Разделим отношение УЧАСТИЕ В ПРОЕКТАХ на два отношения ПРОЕКТЫ-СОТРУДНИКИ и
ПРОЕКТЫ-ЗАДАНИЯ:
ПРОЕКТЫ-СОТРУДНИКИ (ПРОЕКТ, НомерСОТР)
ПРОЕКТЫ-ЗАДАНИЯ (ПРОЕКТ, ЗАДАНИЕ).
Оба эти отношения находятся в 4NF и свободны от отмеченных аномалий.
Во всех рассмотренных до этого момента примерах производилась декомпозиция одного отношения в
два. Иногда это сделать не удается, но возможна декомпозиция в большее число отношений, каждое
из которых обладает лучшими свойствами. В таких случаях применяют пятую НФ, но эти случаи
довольно редки и на практике 5NF не используется.
Контрольные вопросы
Download