Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метода к типовому v.3_.doc
Скачиваний:
5
Добавлен:
11.11.2019
Размер:
2.18 Mб
Скачать

2.2Теория нормальных форм

Набор отношений базы данных должен удовлетворять следующим требованиям:

  1. между атрибутами не должно быть нежелательных функциональных зависимостей;

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

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

В теории реляционных баз данных выделяется следующая последовательность нормальных форм:

  • первая нормальная форма (1NF);

  • вторая нормальная форма (2NF);

  • третья нормальная форма (3NF);

  • нормальная форма Бойса-Кодда (BCNF или НФБК);

  • четвертая нормальная форма (4NF);

  • пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF).

Каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая.

При переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются.

При нормализации обычно ограничиваются приведением отношений базы данных к НФБК. Поэтому четвертая нормальная форма и пятая нормальная форма в настоящем пособии не рассматриваются.

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

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

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

Пример. Отношение: СтудентыОценки (КодСтуд, КодДисц, ФИОСтуд, Оценка) нужно для хранения информации о студентах и их оценках по каждой дисциплине.

Первичный ключ: КодСтуд, КодДисц

Функциональные зависимости:

КодСтуд, КодДисц  Оценка

КодСтуд  ФИОСтуд

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

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

Пример. Отношение: ГруппыСпециальности (КодГруппы, КодСпец, НаименованиеСпец) нужно для хранения информации о группах и специальностях факультета.

Первичный ключ: КодГруппы

Функциональные зависимости:

КодГруппы  КодСпец

КодСпец  НаименованиеСпец

На лицо явная транзитивная зависимость атрибута НаименованиеСпец от атрибута КодГруппы.

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

Пример. Отношение ДисциплиныСеместры (КодДисц, КодВидаЗанятий, КолвоВСеместре, Семестр, НаименованиеДисц) нужно для хранения информации о дисциплине, помимо всего прочего о том, сколько контрольных работ, семинаров и прочих видов занятий в каждом семестре проводится по этой дисциплине. Предполагается, что наименование дисциплины уникально.

Первичный ключ: КодДисц, КодВидаЗанятий.

Потенциальный ключ: НаименованиеДисц, КодВидаЗанятий

Функциональные зависимости:

КодДисц  НаименованиеДисц

НаименованиеДисц  КодДисц

КодДисц, КодВидаЗанятий  КолвоВСеместре

КодДисц, КодВидаЗанятий  Семестр

Это отношение находится в трех нормальных формах: так как атрибут НаименованиеДисц является детерминантом и потенциальным ключом, удовлетворяется условие второй нормальной формы; также отсутствуют транзитивные зависимости. Однако, это отношение не находится в НФБК, т.к. ключевой атрибут КодДисц зависит от неключевого атрибута НаименованиеДисц.