Функциональные зависимости. Основные понятия.



Лекция 4

ТЕОРИЯ НОРМАЛИЗАЦИИ РЕЛЯЦИОННОЙ МОДЕЛИ ДАННЫХ

1.

2.

3.

4.

4.1. Приведение отношения к Первой Нормальной Форме (1НФ)

4.2. Аномалии при выполнении операций в базе данных.

4.3. Функциональные зависимости. Основные понятия.

4.4. Приведение отношения ко Второй Нормальной Форме (2НФ)

4.5. Приведение отношения к Третьей Нормальной Форме (3НФ)

4.6. Алгоритм нормализации отношений (приведение к 3НФ)

4.7. Декомпозиция отношения без потерь. Теорема Хеза.

 

Приведение отношения к Первой Нормальной Форме (1НФ)

Рассмотрим в качестве предметной области некоторую организацию, выполняющую некоторые проекты. Модель предметной области опишем следующим неформальным текстом:

1. Сотрудники организации выполняют проекты.

2. Проекты состоят из нескольких заданий.

3. Каждый сотрудник может участвовать в одном или нескольких проектах, или временно не участвовать ни в каких проектах.

4. Над каждым проектом может работать несколько сотрудников, или временно проект может быть приостановлен, тогда над ним не работает ни один сотрудник.

5. Над каждым заданием в проекте работает ровно один сотрудник.

6. Каждый сотрудник числится в одном отделе.

7. Каждый сотрудник имеет телефон, находящийся в отделе сотрудника.

В ходе дополнительного уточнения того, какие данные необходимо учитывать, выяснилось следующее:

1. О каждом сотруднике необходимо хранить табельный номер и фамилию. Табельный номер является уникальным для каждого сотрудника.

2. Каждый отдел имеет уникальный номер.

3. Каждый проект имеет номер и наименование. Номер проекта является уникальным.

4. Каждая работа из проекта имеет номер, уникальный в пределах проекта. Работы в разных проектах могут иметь одинаковые номера.

Первоначально каждое отношение находится в 1НФ. Первая нормальная форма (1НФ) – это отношение, характеризующееся установленными свойствами:

- в отношении нет одинаковых кортежей;

- кортежи отношения не упорядочены;

- атрибуты отношения не упорядочены и различаются по наименованию;

- все значения атрибутов атомарны.

Пусть схема отношения, находящегося в 1НФ имеет вид:

СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ (Н_СОТР, ФАМ, Н_ОТД, ТЕЛ, Н_ПРО, ПРОЕКТ, Н_ЗАДАН)

где

Н_СОТР – табельный номер сотрудника;

ФАМ – фамилия сотрудника;

Н_ОТД – номер отдела, в котором числится сотрудник;

ТЕЛ – телефон сотрудника;

Н_ПРО – номер проекта, над которым работает сотрудник;

ПРОЕКТ – наименование проекта, над которым работает сотрудник;

Н_ЗАДАН – номер задания, над которым работает сотрудник.

Таблица 1 – Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ в 1НФ

Н_СОТР ФАМ Н_ОТД ТЕЛ Н_ПРО ПРОЕКТ Н_ЗАДАН
1 Иванов 1 123 1 Космос 1
1 Иванов 1 123 2 Климат 1
2 Петров 1 123 1 Космос 2
3 Сидоров 2 321 1 Космос 3
3 Сидоров 2 321 2 Климат 2

Аномалии при выполнении операций в базе данных.

Видно, что в табл. 1 данные хранятся с большой избыточностью: повторяются фамилии сотрудников, номера телефонов, названия проектов. Более того, в одном отношении хранятся независимые друг от друга данные (о сотрудниках, об отделах, о проектах, о работах по проектам). До тех пор, пока с отношением не производится никаких операций, это не приносит неудобств. Но при изменении состояния предметной области, что соответственно меняет состояние базы данных, возникает большое количество проблем.

Исторически эти проблемы получили название аномалии обновления.  Сегодня не существует строгого определения понятия аномалии в базе данных. Аномалии определяют как противоречие между моделью предметной области и физической моделью данных, поддерживаемой конкретной СУБД. "Аномалии возникают в том случае, когда наши знания о предметной области оказываются, по каким-то причинам, невыразимыми в схеме БД или входящими в противоречие с ней".

Будем придерживаться интуитивного понятия аномалии как неадекватности модели данных предметной области (что говорит на самом деле о том, что логическая модель данных попросту неверна!) или как дополнительные трудности в реализации ограничений предметной области средствами СУБД (дополнительный программный код в виде триггеров или хранимых процедур).

Т.к. аномалии проявляют себя при выполнении операций, изменяющих состояние базы данных, то различают следующие виды аномалий:

- аномалии вставки (INSERT);

- аномалии обновления (UPDATE);

- аномалии удаления (DELETE).

Рассмотрим отношение в табл.1, в нем выделим следующие аномалии.

Аномалии вставки (INSERT). В табл. 1 нельзя вставить данные о сотруднике, который пока не участвует ни в одном проекте. Если, например, во втором отделе появляется новый сотрудник, скажем, Пушнарев, и он пока не участвует ни в одном проекте, то в отношение нужно вставить кортеж (4, Пушнарев, 2, 321, null, null, null). Это сделать невозможно, т.к. атрибут Н_ПРО (номер проекта) входит в состав потенциального ключа, и, следовательно, не может содержать null-значений.

Точно также нельзя вставить данные о проекте, над которым пока не работает ни один сотрудник.

Причина аномалии – хранение в одном отношении разнородной информации (и о сотрудниках, и о проектах, и о работах по проекту).

Вывод – логическая модель данных неадекватна модели предметной области. База данных, основанная на такой модели, будет работать неправильно.

Аномалии обновления (UPDATE). Фамилии сотрудников, названия проектов, номера телефонов повторяются во многих кортежах отношения. Поэтому если сотрудник меняет фамилию, или проект меняет наименование, или меняется номер телефона, то такие изменения необходимо одновременно выполнить во всех местах, где эта фамилия, название или номер телефона встречаются, иначе отношение станет некорректным (например, один и тот же проект в разных кортежах будет называться по-разному). Таким образом, обновление базы данных одним действием реализовать невозможно. Для поддержания отношения в целостном состоянии необходимо написать триггер, который при обновлении одной записи корректно исправлял бы данные и в других местах.

Причина аномалии – избыточность данных, также порожденная тем, что в одном отношении хранится разнородная информация.

Вывод – увеличивается сложность разработки базы данных. База данных, основанная на такой модели, будет работать правильно только при наличии дополнительного программного кода в виде триггеров.

Аномалии удаления (DELETE). При удалении некоторых данных может произойти потеря другой информации. Например, если закрыть проект "Космос" и удалить все строки, в которых он встречается, то будут потеряны все данные о сотруднике Петрове. Если удалить сотрудника Сидорова, то будет потеряна информация о том, что в отделе номер 2 находится телефон 321. Если по проекту временно прекращены работы, то при удалении данных о работах по этому проекту будут удалены и данные о самом проекте (наименование проекта). При этом если был сотрудник, который работал только над этим проектом, то будут потеряны и данные об этом сотруднике.

Причина аномалии – хранение в одном отношении разнородной информации (и о сотрудниках, и о проектах, и о работах по проекту).

Вывод – логическая модель данных неадекватна модели предметной области. База данных, основанная на такой модели, будет работать неправильно.

Функциональные зависимости. Основные понятия.

Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ находится в 1НФ, однако логическая модель данных не адекватна модели предметной области. Таким образом, первой нормальной формы недостаточно для правильного моделирования данных.

Для устранения указанных аномалий (а на самом деле для правильного проектирования модели данных!) применяется метод нормализации отношений. Нормализация основана на понятии функциональной зависимости атрибутов отношения.


Дата добавления: 2022-01-22; просмотров: 20; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!