Uploaded by Анастасия Стексова

бд норм

advertisement
Корректность операций над
отношениями
-Аномалии при работе с
реляционной БД
-Нормализация схемы РБД
-Ациклические БД
Аномалии - нарушения целостности БД
Рассмотрим аномалии на примере отношения
R0 = СОТРУДНИКИ (Код, Долж, Оклад, Отдел, Тел, Проект, Задание)
Составной ключ отношения - атрибуты (Код, Проект):
каждый сотрудник может участвовать в нескольких проектах и по
каждому проекту иметь задание
В этом отношении имеется избыточность: сведения о сотруднике
повторяются столько раз, сколько заданий он имеет
Код
1
1
2
2
3
3
Долж
Инж
-"Инж
-"Лаб
-“-
Сотрудники
Оклад Отдел
Тел
2000
15
15-11
-"-"-"2500
15
15-11
-“-“-“1500
20
20-02
-“-“-“-
Проект Задание
А
А1
С
С3
А
А2
В
В25
Д
Д1
С
С1
Виды аномалий
• Аномалия вставки записи
• Аномалия удаления записи
• Аномалия изменения (обновления) записи
при добавлении нового сотрудника, который пока не участвует
ни в одном проекте, ключ имеет неопределенное значение
при удалении записи об уволенном сотруднике нужно удалить
несколько записей, причем теряются данные о работе,
которую он выполнял
при изменении оклада сотрудника нужно изменить не одну, а
несколько записей, чтобы они не противоречили друг другу
ЭТИ АНОМАЛИИ ВЫЗВАНЫ ИЗБЫТОЧНОСТЬЮ БД
Нормальные формы отношений
Нормальная
форма
Форма представления схемы реляционной
БД на каком-либо шаге последовательного
улучшения исходной модели.
1НФ
Отношение находится в первой
нормальной форме, если домены для
каждого его атрибута являются
атомарными
фамилия
Имя
адрес
город
Улица- дом
Астров
Сергей
Пенза
Мира-25
Петров
Иван
Пенза
Кирова-3
Каменка
Ленина-2
Никольск
Горная-1
Алексей
Пример не
нормализованной
таблицы :
множественные
значения доменов
для атрибутов Имя,
Адрес
Виды нормальных форм
1НФ
2 НФ 3НФ БКНФ
4НФ
5НФ
Свойства нормальных форм
каждая следующая нормальная форма улучшает
свойства предыдущей
при переходе к следующей нормальной форме
свойства предыдущих нормальных форм
сохраняются
Классическая методика нормализации схемы
РБД
Декомпозиция:
следует разбить исходную таблицу на две или более
связанных таблиц, удовлетворяющих требованиям
следующей нормальной формы
фамилия
Имя
город
Астров
Петров
Сергей
код
фамилия
Имя
Улица- дом
1
Астров
Сергей
Мира-25
2
Петров
Иван
3
Петров
Алексей
адрес
Пенза
Кирова-3
Иван
Каменка
Ленина-2
Алексей
Никольск
Горная-1
код
город
Улица- дом
1
Пенза
Мира-25
1
Пенза
Кирова-3
2
Каменка
Ленина-2
3
Никольск
Горная-1
Функциональные зависимости атрибутов
Функциональная
зависимость
в отношении R атрибут Y функционально
зависит от атрибута X в том и только в том
случае, если каждому значению X
соответствует в точности одно значение Y:
X
Y
X функционально определяет Y
Полная
функциональная
зависимость
функциональная зависимость X -> Y
называется полной, если
атрибут Y не зависит функционально от
любого точного подмножества X
(точным подмножеством множества X
называется любое его подмножество, не
совпадающее с X)
Транзитивная
функциональная
зависимость
функциональная зависимость X->Y
называется транзитивной, если
существует такой атрибут Z, что имеются
функциональные зависимости X->Z и Z->Y
Ключи, независимые атрибуты
Возможный
ключ
атомарный или составной атрибут,
значения которого полностью
функционально определяют значения
всех остальных атрибутов отношения
Неключевой
атрибут
любой атрибут отношения, не входящий в
состав первичного ключа
Взаимно
независимые
атрибуты
два или более атрибутов, ни один из
которых не зависит функционально от
других атрибутов
Пример определения ФЗ
Сотрудники
Таб. номер
1
1
2
2
3
3
Долж
Оклад
Отдел
Тел
Проект
Задание
Инж
Инж
Инж
Инж
Лаб
Лаб
2000
2 000
2500
2500
1500
1500
15
15
15
15
20
20
15-11
15-11
15-11
15-11
20-02
20-12
А
С
А
В
Д
С
А1
С3
А2
В25
Д1
С1
Первичный ключ: НОМЕР, ПРОЕКТ
Функциональные зависимости:
Номер -> Долж
неполные ФЗ (зависят от части ключа)
Номер -> ОКЛАД
Номер -> ОТДЕЛ
Номер -> ТЕЛ
неполная и транзитивная зависимость
Тел -> Отдел
2НФ и 3 НФ
Вторая
нормальная
форма
отношение R находится во второй
нормальной форме в том и только в том
случае, когда находится в 1NF и каждый
неключевой атрибут полностью
функционально зависит от первичного
ключа
Третья
нормальная
форма
отношение R находится в третьей
нормальной форме в том и только в том
случае, если находится в 2NF и каждый
неключевой атрибут не транзитивно
зависит от первичного ключа
Пример нормализации до 2 НФ
Правило: атрибуты из каждой неполной ФЗ соберем в одну таблицу,
определяющий атрибут станет ключом
Исходные ФЗ:
Номер -> ДОЛЖ
-> ОКЛАД
-> ОТДЕЛ
-> ТЕЛ
ТЕЛ ->Отдел
Получим: R2 = (НОМЕР, ДОЛЖ, ОКЛАД, ОТДЕЛ, ТЕЛ)
R3 = (ТЕЛ, ОТДЕЛ)
Остальные атрибуты исходной таблицы связаны полной ФЗ:
R4 = (НОМЕР, ПРОЕКТ, ЗАДАНИЕ)
Проверка: 1) нет ли потерянных атрибутов?
2) Можно ли с помощью операции соединения восстановить исходную
таблицу?
3) требования 2НФ выполнены? (отсутствуют неполные ФЗ неключевых
атрибутов от ключа)
Нормализация до 3 НФ
R2 = (НОМЕР, ДОЛЖ, ОКЛАД, ОТДЕЛ, ТЕЛ)
Имеет транзитивную зависимость НОМЕР -> ТЕЛ -> Отдел,
так как существуют также HОМЕР -> Тел и Тел -> Отдел
То есть избыточность сохранилась. При изменении номера телефона
отдела придется менять его значение у всех сотрудников, при удалении
данных о последнем сотруднике исчезнет информация о номере телефона
и отделе. Вместе с тем у нас есть R3 = (ТЕЛ, ОТДЕЛ) , поэтому можно
удалить атрибут Отдел из R2
R4 (НОМЕР, ДОЛЖ, ОКЛАД, Тел)
Первичный ключ: НОМЕР
Функциональные зависимости полные:
НОМЕР -> ДОЛЖ
НОМЕР -> ОКЛАД
HОМЕР -> ОТДЕЛ
R3 = (ТЕЛ, ОТДЕЛ )
Первичный ключ: Тел
Функциональная зависимость:
ОТДЕЛ <-> ТЕЛ
Считая, что в отделе один
телефон, имеем взаимно
однозначную ФЗ
ОТДЕЛ  ТЕЛ
Каждое из отношений находится в 3НФ и свободно от отмеченных аномалий
НФ Бойса - Кодда
Детерминант
детерминантом называется любой
атрибут, от которого полностью
функционально зависит некоторый другой
атрибут
Нормальная
форма Бойса Кодда
отношение R находится в нормальной
форме Бойса-Кодда (BCNF) в том и только
в том случае, если каждый детерминант
является возможным ключом
Замечание: если в отношении имеется только один
возможный ключ (являющийся первичным ключом), то это
определение становится эквивалентным определению
третьей нормальной формы
Пример БКНФ
Рассмотрим R5 = (НОМЕР, ДОЛЖ, ОКЛАД, ТЕЛ, Пасп)
Детерминанты: Пасп и Номер , Они же - возможные ключи,
поэтому R5 в БКНФ
Рассмотрим R6 = (КодЗадачи, Номер, Проект, Задание)
Возможные ключи: КодЗадачи и (Номер, Проект)
детерминант: КодЗадачи, так как имеются ФЗ:
КодЗадачи (Проект, Задание) – список всех задач
КодЗадачи  (Номер) – распределение задач по сотрудникам
Если первичный ключ (Номер, проект), то схема находится в 3NF, однако
из-за зависимости части ключа от детерминанта могут быть аномалии:
если задача не выдана сотруднику, то ее нельзя записать в БД,
если сотрудник уволен, задача пропала, тк ключ станет неопределен
Отношение не находится в БКНФ!
Пример БКНФ (продолжение)
Разделим отношение на 2 части:
R6 = (КодЗадачи, Номер, Проект, Задание)
R7=(КодЗадачи, Проект, Задание)
R8=(КодЗадачи, Номер)
Оба полученных отношения находятся в 3НФ и БКНФ
Многозначные функциональные
зависимости
• Если отношение R(A,B,C) можно получить путем
натурального соединения отношений R1(A,B) *
R2(A,C), то в R имеется многозначная ФЗ: A B и
AC (они всегда встречаются парами)
Четвертая
нормальная
форма
отношение R находится в четвертой
нормальной форме (4NF) в том и только в
том случае, если в случае существования
многозначной зависимости A ->> B все
остальные атрибуты R функционально
зависят от A
Иногда возможна декомпозиция не на 2, а на большее число отношений,
каждое из которых обладает лучшими свойствами. В таких случаях применяют
пятую НФ, но эти случаи очень редки и на практике 5NF не используется
Пример многозначной ФЗ
•
•
•
•
•
•
•
•
•
•
•
Дано : Х(Завод, Изделие, Деталь, ПланИзд)
Требуется нормализовать Х
Выделим ФЗ: Завод, Изделие ->ПланИзд
3НФ: Х1 (Завод, Изделие, ПланИзд)
Х2 (Завод, Изделие, Деталь)
В Х1 двухатрибутный ключ и 1 атрибут, поэтому многозначной
зависимости нет (надо min 3 атрибута)
В Х2 есть МФЗ:
Изделие Завод (перечень изготовителей каждого изделия),
Изделие Деталь (список деталей для каждого изделия)
Нужно разделить Х2 на 2 отношения:
Х21(Завод, Изделие) и Х22(Изделие, Деталь)
Х21 полностью содержится в Х1, поэтому
Ответ: Х= Х1 * Х22
Ациклические базы данных
•
•
•
•
•
•
Имеются отношения S1, S2, .. Sk
Граф соединений:
Вершины: имена S1, S2, .. Sk
Связь Si-Sj – для отношений с общими атрибутами
Аij – вес дуги (общие атрибуты)
А-путь содержит атрибут А к каждом из отношений на
пути
• Ациклическая БД имеет граф соединений,
который можно превратить дерево при
сохранении всех А-путей для любой пары
отношений с общим атрибутом А
Пример циклической и ациклической схемы
Х1(А,Б)
А
Х2(А,В)
Ациклическая схема
А
Я1(А,О)
А
Х3(А,Д,Е)
А
Я2(А,З)
О
Циклическая схема
З
Я3(О,З,Т)
Аномалии в циклических БД
• Некорректные ответы на запросы, так как
результат можно вычислить разным
способом и ответы будут разными
Приведение к ацикличности:
• Добавление нового отношения с атрибутами, входящими в
цикл
• Добавление новых атрибутов, переименование атрибутов,
разделение атрибутов.
• Примеры: см. Мишенин с.94-98
Download