Уточнение третьей нормальной формы – нормальная форма Бойса-Кодда

При определении 3НФ было сделано допущение о том, что отношение имеет только один потенциальный ключ, который и является первичным. Если рассмотреть более общий случай, то первоначальное определение, данное Э. Коддом для ЗНФ, оказывается не во всех случаях удовлетворительным. В частности, оно неадекватно при выполнении следующих условий:

1) отношение имеет два (или больше) потенциальных ключа;

2) эти потенциальные ключи являются составными;

3) они перекрываются (т.е. имеют по крайней мере один общий атрибут).

Поэтому впоследствии исходное определение ЗНФ было заменено более строгим определением Бойса-Кодда.

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

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

Рассмотрим следующее отношение:

StudentID CourseID TeacherID
     
     
     

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

1. Каждый преподаватель ведет только одну дисциплину.

2. Одну дисциплину может вести несколько преподавателей.

3. Для некоторого студента одну дисциплину ведет только один преподаватель.

В данном отношении есть два потенциальных ключа { StudentID, CourseID } и { StudentID, TeacherID }. Оба ключа являются составными и они имеют общий атрибут StudentID, т.е. перекрываются. Таким образом выполнены все три условия, которые могут привести к ситуации, когда отношение может находиться в 3НФ, но не находится в НФБК.

Очевидно, что отношение находится в 3НФ:

· значения всех атрибутов неделимы (1НФ);

· каждый неключевой атрибут неприводимо зависит от первичного ключа (2НФ);

· все неключевые атрибуты нетранзитивно зависят от потенциального ключа (3НФ).

Однако, в данном отношении существует ФЗ TeacherIDCourseID и TeacherID при этом не является потенциальным ключом, следовательно отношение не находится в НФБК.

Если произвести декомпозицию этого отношения на два: { StudentID, CourseID } и { CourseID, TeacherID }, то потеряем информацию о том, какой именно преподаватель ведет дисциплину для конкретного студента. Это объясняется тем, что исходное отношение является атомарным, т.е. его нельзя разбить на две независимые проекции.

Таким образом, в процессе нормализации не всегда есть смысл стремиться к атомарным отношениям, но, тем не менее, для основных объектов базы данных рекомендуется добиваться атомарности.

Если отношение находится только в 1НФ, но не находится во 2НФ и 3НФ, то можно говорить об избыточности информации. Избыточность не только увеличивает объём и трудоёмкость заполнения базы данных, но и может привести к аномалиям обновления. Аномалии могут приводить к трудностям при вставке, обновлении и удалении, а главное к искажению или потере информации.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: