Проектирование баз данных. Функциональные зависимости. Нормализация.


Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области.
Для правильного проектирования модели данных применяется метод нормализации отношений. Нормализация основана на понятии функциональной зависимости атрибутов отношения.
Опред. Функциональной зависимости:В отношении R атрибут Y функционально зависит от атрибута X в том и только в том случае, если каждому значению X соответствует в точности одно значение Y
1) 1НФ — это обычное отношение, обладающее свойствами:
— В отношении нет одинаковых кортежей.
— Кортежи не упорядочены.
— Атрибуты не упорядочены и различаются по наименованию.
— Все значения атрибутов атомарны
2) Отношение находится во 2НФ тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа. (Неключевой атрибут — это атрибут, не входящий в состав никакого потенциального ключа). Если потенциальный ключ отношения является простым, то отношение автоматически находится в 2НФ.
3) Отношение находится в 3НФ тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы. (Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого).
Алгоритм нормализации:
1) (Приведение к 1НФ). На первом шаге задается одно или несколько отношений, отображающих понятия предметной области и выписываются обнаруженные функциональные зависимости.
Рассмотрим проектирование БД на примере:
Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ

Зависимость атрибутов от ключа отношения:
{Н_СОТР, Н_ПРО} ? ФАМ
{Н_СОТР, Н_ПРО} ? Н_ОТД
{Н_СОТР, Н_ПРО} ? ТЕЛ
{Н_СОТР, Н_ПРО} ? ПРОЕКТ
{Н_СОТР, Н_ПРО} ? Н_ЗАДАН
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:
Н_СОТР ? ФАМ ; Н_СОТР ? Н_ОТД ; Н_СОТР ? ТЕЛ
Зависимость наименования проекта от номера проекта: Н_ПРО ПРОЕКТ
Зависимость номера телефона от номера отдела: Н_ОТД ТЕЛ
2) (Приведение к 2НФ). Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводим декомпозицию этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа. В исходном отношении остаются все ключевые атрибуты

Загрузка...