- •Проектирование баз данных
- •Введение
- •1Задание и требования к типовому расчету
- •1.1Задание
- •1.2График выполнения
- •1.3Содержание пояснительной записки
- •1.4Защита типового расчета
- •2Теоретические сведения
- •2.1Термины и определения
- •2.2Теория нормальных форм
- •2.3Нормализация базы данных методом декомпозиции
- •2.4Проверка декомпозиции методом табло
- •2.5Нормализация базы данных с использованием модели er-диаграмм
- •2.6Основы реляционной алгебры.
- •3Пример выполнения типового расчета (с методическими указаниями и рекомендациями)
- •3.1Построить диаграмму функциональных зависимостей и найти минимальное покрытие отношения
- •3.2Нормализация базы данных
- •3.2.1Анализ предметной области
- •3.2.2Нормализация базы данных методом декомпозиции.
- •3.2.3Проверка нормализации методом табло.
- •3.2.4Нормализация базы данных с использованием модели er-диаграмм.
- •3.3Реляционная алгебра
- •Приложение а. Варианты заданий.
- •Приложение б. Титульный лист
- •Пояснительная записка к типовому расчету
- •Приложение в. Типовые вопросы для защиты
- •Приложение г. Заполненная база данных Учебный процесс
2.3Нормализация базы данных методом декомпозиции
С помощью метода декомпозиции отношение приводится в нормальной форме Бойса-Кодда. Метод декомпозиции можно проводить аналитически, составив перечень всех ФЗ, или графически, построив диаграмму функциональных зависимостей. Графический подход предпочтительнее в силу своей наглядности.
Алгоритм декомпозиции.
Определить универсальное отношение для базы данных и его первичный ключ.
Определить все функциональные зависимости между атрибутами универсального отношения.
Получить минимальное покрытие, избавившись от избыточных функциональных зависимостей.
Избыточные функциональные зависимости удаляются из набора функциональных зависимостей с помощью следующих правил.
Правило №1. Рефлексивность.
А А справедливо, но избыточно.
Правило №2. Добавление.
Если А ® В, то А, С ® В справедливо, но избыточно, и А, С ® В, С справедливо, но избыточно.
Рис. 2.1 а) Рис. 2.1 б)
Правило №3. Транзитивность.
Если А ® В, В ® С, то А ® В ® С – транзитивная функциональная зависимость и А ® С справедливо, но избыточно.
Рис. 2.2
Правило №4. Псевдотранзитивность.
Если А ® В, и В, С ® D, то А, C ® D справедливо, но избыточно.
Рис. 2.3
Правило №5. Объединение.
Если А ® В, и А ® С, то А ® В, С справедливо, но избыточно.
Рис. 2.4
Часто это правило используют для избавления функциональной зависимости группы атрибутов (В, С на рис. 2.4) от одного атрибута (А на рис. 2.4) так, как показано на рис. 2.5.
Рис. 2.5
Порядок удаления избыточных функциональных зависимостей может оказать влияние на результат, поэтому минимальное покрытие не всегда уникально.
После удаления избыточных ФЗ происходит непосредственно нормализация универсального отношения. На каждом шаге отношение приводится к следующей нормальной форме, начиная со 2НФ. При этом, как правило, отношение делиться на несколько отношений и для каждого из полученных отношений повторяется процедура нормализации.
Пошаговая нормализация проводится по следующим правилам:
Приведение к 2НФ. Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводится декомпозиция этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа. В исходном отношении остаются все ключевые атрибуты:
Исходное отношение: R(K1, K2, A1,…,An, B1,…,Bm).
Ключ: {K1, K2} – составной.
Функциональные зависимости:
{K1, K2} {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.
{K1} {A1,…,An} – зависимость некоторых атрибутов от части сложного ключа.
Декомпозированные отношения:
R1(K1, K2, B1,…,Bm) – остаток от исходного отношения. Ключ {K1, K2}.
R2(K1, A1,…,An,) – атрибуты, вынесенные из исходного отношения вместе с частью сложного ключа. Ключ K1.
Приведение к 3НФ. Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов от других неключевых атрибутов, то проводится декомпозиция этих отношений следующим образом: те неключевые атрибуты, которые зависят от других неключевых атрибутов, выносятся в отдельное отношение. В новом отношении ключом становится детерминант функциональной зависимости:
Исходное отношение: R(K, A1,…,An, B1,…,Bm).
Ключ: К.
Функциональные зависимости:
K {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.
{A1,…,An} {B1,…,Bm} – зависимость некоторых неключевых атрибутов от других неключевых атрибутов.
Декомпозированные отношения:
R1(K, A1,…,An) – остаток от исходного отношения. Ключ К.
R2(A1,…,An, B1,…,Bm) – атрибуты, вынесенные из исходного отношения вместе с детерминантом функциональной зависимости. Ключ {A1,…,An}.
Приведение к НФБК. Если в некоторых отношениях обнаружена зависимость некоторых ключевых атрибутов от неключевых атрибутов, то есть некоторые детерминанты не являются потенциальным ключом, то проводится декомпозиция этих отношений следующим образом: причинные функциональные зависимости выносится в отдельное отношение. В новом отношении ключом может стать тот или иной детерминант:
Исходное отношение: R(K, A1,…,An, B1,…,Bm).
Ключ: К.
Функциональные зависимости:
K {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.
{A1,…,An} K – зависимость ключевого атрибута от неключевых атрибутов.
Декомпозированные отношения:
R1(K, B1,…,Bn) – остаток от исходного отношения. Ключ К.
R2(K, A1,…,An) – атрибуты, вынесенные из исходного отношения вместе с детерминантом функциональной зависимости. Возможные ключи {A1,…,An} или К.
Повторить шаг 4 для каждого нового отношения, полученного в результате декомпозиции.
Проектирование завершается, когда все отношения находятся в НФБК.
Если на шаге 3 составлено более одного минимального покрытия, то необходимо сравнить результаты, полученные на основе различных минимальных покрытий, и выбрать наилучший.