Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КонспектЛекций.doc
Скачиваний:
70
Добавлен:
14.05.2015
Размер:
1.26 Mб
Скачать

1.8 Нормализация отношений в базе данных.

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

Функциональной зависимостью набора атрибутов B отношения R от набора атрибутов А того же отношения называется такое соотношения проекций1 R[A] и R[B], при котором в каждый момент времени любому элементу проекции R[A] соответствует только один элемент проекции R[B], входящий вместе с ним в какой-либо кортеж отношения R. Обозначение: R.A  R.B

Взаимно-независимые– атрибуты, которые не зависят функционально друг от друга.

Аксиомы функциональных зависимостей:

  1. Рефлексивность: если B  А, то А  B.

  2. Дополнение: если А  B, то АС  BС.

  3. Транзитивность: если А  B и B  C, то А  С.

Проектирование схемы базы данных обычно осуществляется путём декомпозиции (разбиения) исходного набора отношений, при этом полученные отношения являющихся проекциями исходных.

Схемы базы данных называются эквивалентными, если содержание исходной базы может быть получено путём естественного соединения отношений, входящих в результирующую схему, и при этом не появляется новых кортежей в исходной базе данных.

Нормализация– это процесс проектирования схемы базы данных с использованием декомпозиции. Каждой нормальной форме соответствует некоторый определённый набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.

1NF .

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

Это определение является синонимом определения отношения в теории реляционных баз данных.

Пример отношения, которое НЕ находится в 1NF: расписание занятий

Преподаватель

День недели

Время

Дисциплина

Вид занятия

Группа

Иванов И.И.

Понедельник

8:00

Теор. мех.

практика

21301

9:45

Теор. мех.

лекция

21301

Вторник

11:20

Оптика

лекция

21301, 21303

Петров П.П.

Вторник

11:20

Базы данных

практика

21402

Среда

9:45

Комп. графика

практика

21202 (2)

Четверг

18:35

практика

21202 (1)

Для перевода отношения в 1NF необходимо разделить с дублированием содержания общие ячейки на отдельные записи.

2NF .

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

Функциональная зависимость R.A R.B называется полной, если набор атрибутов В функционально зависит от А, но не зависит функционально от любого подмножества А, то есть если  А1  А  R.A –/ R.B. В противном случае функциональная зависимость называется неполной.

Пример отношения, которое НЕ находится во 2NF: результаты сессии.

Рассмотрим отношение R ( ФИО, номер зачетки, группа, дисциплина, оценка ).

Первичный ключ подчеркнут.

Однако при этом атрибуты (ФИО, группа) зависят только от части первичного ключа – от атрибута (номер зачетки).

При этом возможны следующие аномалии:

- в результате ошибки оператора студенту по результатам одного или нескольких экзаменов приписали не ту группу.

- если студент не сдал ни одного экзамена, то он не существует.

Для приведения отношения во 2NF следует провести декомпозицию (разбить на проекции), например так:

  1. R1 ( ФИО, номер зачетки, группа).

  2. R2 (номер зачетки, дисциплина, оценка ).

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

3NF .

Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме и не содержит транзитивных зависимостей.

Функциональная зависимость R.A R.B является транзитивной, если существует набор атрибутов C такой, что:

  1. С не является подмножеством А.

  2. С не включает в себя В. (В  С)

  3. Существует функциональная зависимость R.A  R.С.

  4. Не существует функциональной зависимости R.С  R.А.

  5. Существует функциональная зависимость R.С  R.B.

Иными словами, требование 3NF сводится к тому, чтобы все неключевые поля зависели только от первичного ключа и не зависели друг от друга.

Пример отношения, которое находится во 2NF, но НЕ находится в 3NF: связь студента с группой, факультетом, специализацией.

Дано отношение: R( номер зачетки, ФИО, группа, факультет, кафедра ).

Первичный ключ подчеркнут. Так как он состоит из одного атрибута, то критерий 2NF выполнен.

В отношении имеются транзитивные зависимости, в числе которых:

1) номер зачётки  группа (обратное неоднозначно), группа  факультет, номер зачётки  факультет.

2) номер зачётки  кафедра, кафедра  факультет, номер зачётки  факультет.

Для приведения отношения в 3NF требуется декомпозиция следующего вида:

  1. R1 ( номер зачетки, ФИО, группа ).

  2. R2 ( группа, факультет).

  3. R3 ( кафедра, факультет ).

BCNF .

Отношение находится в нормальной форме Бойса-Кодда, если оно находится в третьей нормальной форме и каждый детерминант отношения является возможным ключом этого отношения.

Определение: Если в отношении существует несколько функциональных зависимостей, то каждый атрибут или набор атрибутов, от которого зависит другой атрибут, называется детерминантом отношения.

Иными словами, отношение находится в BCNF, если любая функциональная зависимость между его атрибутами сводится к полной функциональной зависимости от возможного ключа.

Пример отношения, которое находится в 3NF, но НЕ находится в BCNF: таблица результатов приемных экзаменов:

Дано отношение: R( идентификатор, номер паспорта, предмет, оценка ).

Ответ на вопрос: зачем? Например, один абитуриент потерял свою карточку и ему выдали другую с другим номером. Второй абитуриент – гениальный ребенок, и у него пока нет паспорта.

Имеются следующие функциональные зависимости:

1. Идентификатор, предмет оценка;

2. Номер паспорта, предмет оценка; (зависимость полная)

3. Идентификатор номер паспорта; (зависимым не является непервичный атрибут)

4. Номер паспорта идентификатор.

Транзитивных зависимостей нет, так как зависимость 3 имеет обратную 4. Таким образом, отношение находится в 3NF. Но функциональные зависимости между атрибутами идентификатор и номер паспорта не являются зависимостями от возможного ключа этого отношения.

Для приведения отношения в BCNF возможна декомпозиция следующего вида:

  1. R1 ( идентификатор, предмет, оценка).

  2. R2 ( идентификатор, номер паспорта).

Ответ на вопрос: зачем? Например, один абитуриент потерял свою карточку и ему выдали другую с другим номером. Второй абитуриент – гениальный ребенок, и у него пока нет паспорта.

В большинстве случаев достижение третьей нормальной формы или даже формы Бойса-Кодда считается достаточным для реальных проектов баз данных, однако в теории нормализации существуют и другие нормальные формы:

4NF.

Отношение находится в четвёртой нормальной форме в том и только в том случае, если существует многозначная зависимость А­ –>> B и все остальные атрибуты R функционально зависят от А.

Определение: В отношении R(A,B,C) существует многозначная зависимость R.A –>> R.B в том и только в том случае, если множество значений В, соответствующее паре значений атрибутов А и С, зависит только от А и не зависит от С.

Иными словами, отношение находится в четвёртой нормальной форме, если оно находится в BCNF, и все его многозначные зависимости являются функциональными зависимостями от потенциальных ключей.

Пример (1) отношения, которое НЕ находится в 4NF: список дисциплин, которые предстоит прослушать студенту первого курса:

Дано отношение: R( номер зачетки, группа, дисциплина ).

Перечень дисциплин, которые должен слушать студент на первом курсе, определяется исключительно номером группы, а не номером зачетки. То есть, в данном отношении существуют две многозначные зависимости:

  1. группа –>> дисциплина.

  2. группа –>> номер зачетки.

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

При этом возможны следующие аномалии:

- Мы не можем хранить информацию о новой группе и перечне её дисциплин до тех пор, пока в неё не будут зачислены студенты.

- Если в группу добавляется новый студент, то необходимо сгенерировать для него весь перечень дисциплин для данной группы.

Для приведения отношения в 4NF возможна декомпозиция следующего вида:

  1. R1 ( номер зачетки, группа).

  2. R2 (группа, дисциплина ).

Пример (2): меню:

Исходное отношение: R( блюдо, повар, рецепт ). Повар умеет готовить разные блюда, одинаково названные блюда могут отличаться рецептом приготовления.

Декомпозиция:

  1. R1 ( повар, блюдо).

  2. R2 (блюдо, рецепт).