
- •Тема 3 Проектирование баз данных
- •3.1. Элементы теории нормальных форм реляционных баз данных.
- •3.2. 1-Я нормальная форма (1нф).
- •3.3. 2-Я нормальная форма (2нф).
- •3.4. 3-Я нормальная форма (3нф).
- •Нормальная форма Бойса-Кодда.
- •3.5.2. Алгоритм проектирования отношений, находящихся в нфбк.
- •3.6. Корректные и некорректные декомпозиции отношений.
- •3.6.1. Аналитическое условие отсутствия потерь при соединении.
- •3.6.2. Метод табло.
- •Раздел 1.
- •Раздел 2.
- •Раздел 3.
- •3.7.Замыкание множества заданных функциональных зависимостей.
- •3.7.1. Алгоритм satisfies.
- •3.7.2. Правила вывода функциональных зависимостей.
- •Правило-f11.Рефлекторность.
- •Правило f12.Пополнение.
- •Правило f13. Транзитивность.
- •Минимальное покрытие множества функциональных зависимостей.
- •3.8. Mv–зависимости.
- •Определение mv-зависимостей.
- •3.9. 4-Я нормальная форма (4нф).
- •3.10. Алгоритм проектирования баз данных методом анализа функциональных и множественных зависимостей.
- •3.11.Проектирование баз данных. Методом “сущность-связь” (er-диаграмм, entity-relationship).
- •Получение отношений из er- диаграмм для бинарных связей.
Тема 3 Проектирование баз данных
3.1. Элементы теории нормальных форм реляционных баз данных.
В реляционных базах данных схема содержит как структурную, так и семантическую информацию.
Структурная информация связана с объявлением отношений.
Семантическая выражается множеством известных функциональных зависимостей между атрибутами отношений, объявленных в схеме.
Однако некоторые функциональные зависимости могут быть нежелательными из-за побочных эффектов аномалий, которые они вызывают при модификации базы данных. В связи с этим возникает вопрос о корректности представленной схемы.
Корректной считается схема, в которой отсутствуют нежелательные функциональные зависимости. В противном случае приходится прибегать к процедуре, называемой декомпозицией., при которой данное множество заменяется другим множеством отношений (число их возрастает), являющихся проекциями первых. Цель этой процедуры – устранить нежелательные функциональные зависимости, что и составляет суть процесса нормализации.
Нормализация – это пошаговый обратимый процесс замены данной схемы (или совокупности отношений) другой схемой, в которой отношения имеют более простую и регулярную структуру.
Для приведения отношения к какой-либо нормальной форме прибегают к декомпозиции. При этом мы сталкиваемся с проблемой обратимости, т.е. возможности восстановления исходной схемы. Это означает, что декомпозиция должна сохранять эквивалентность схем при замене одной схемы на другую.
Для обеспечения эквивалентности схем необходима декомпозиция, гарантирующая отсутствие потерь и сохраняющая зависимости. Декомпозиция без потерь гарантирует обратимость, т.е. получение исходного множества отношений путем применения последовательности естественных соединений над их проекциями.
При этом в результирующем отношении не должны появляться ранее отсутствующие кортежи, являющиеся следствием ошибочного соединения. Сохранение зависимостей подразумевает выполнение исходного множества функциональных зависимостей на отношениях новой схемы.
Нормализация отношений базируется на понятиях функциональной зависимости и полной функциональной зависимости.
Функциональная зависимость.
Атрибут Bв отношенииRфункционально зависит от атрибутаAтого же отношения если в каждый момент времени каждому значению атрибутаAсоответствует не более чем одно значение атрибутаB, связанного сAв отношенииR.
Утверждение, что В функционально зависит от А, означает то же самое, что А однозначно определяет В, т.е. если в какой-то момент времени известно значение А, то можно получить и значение В.
Обозначение функциональной зависимости:
Рассмотрим отношение:
Служащий (номер_служащего, ФИО_служащего, зарплата, номер_проекта, дата_окончания).
Рассмотрим функциональные зависимости этого отношения:
ФИО_служащего |
→ (определяет атрибут) |
номер_служащего |
|
|
|
номер_служащего |
→ |
ФИО_служащего |
|
|
|
ФИО_служащего или номер_служащего |
→ |
зарплата |
|
|
|
ФИО_служащего или номер_служащего |
→ |
номер_проекта |
|
|
|
ФИО_служащего или номер_служащего |
→ |
дата_окончания |
|
|
|
номер_проекта |
→ |
дата_окончания |
Атрибут номер_служащего не является функционально зависимым от атрибута зарплата, т.к. несколько служащих могут иметь одинаковую зарплату.
Представим функциональные зависимости нашего отношения в виде диаграммы.
Все функциональные зависимости обозначим в виде стрелок:
Ключом данного отношения, т.е. атрибутом однозначно идентифицирующем кортеж, могут быть номер_служащего или ФИО_служащего.
Мы будем их называть первичными атрибутами.
Полная функциональная зависимость.
Функциональная зависимость А → В называется полной функциональной зависимостью, если В зависит от всей группы атрибутов А, а не от ее части (подмножества).
Например, если А = А1, А2, А3, …, Аки А1, А2→ В, то функциональная зависимость В от А неполная.