Первая, вторая и третья нормальные формы

Теорема Хита

Декомпозиция без потерь

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

Пример: рассмотрим отношение Students:

StudentID LastName FirstName MiddleName GroupID BirthDate
  Казаков Петр Владимирович   1.1.1992
  Васильев Иван Аркадьевич   23.09.1990
  Шишкина Дарья Сергеевна   12.5.1991

1-й вариант декомпозиции. Разобьем Students на два следующих отношения:

StudentID LastName FirstName MiddleName GroupID
  Казаков Петр Владимирович  
  Васильев Иван Аркадьевич  
  Шишкина Дарья Сергеевна  
GroupID BirthDate
  1.1.1992
  23.09.1990

При таком варианте разбиения некоторая информация утрачивается: невозможно определить верную дату рождения (BirthDate) каждого студента.

2-й вариант декомпозиции. Разобьем Students на два следующих отношения:

StudentID LastName FirstName MiddleName GroupID
  Казаков Петр Владимирович  
  Васильев Иван Аркадьевич  
  Шишкина Дарья Сергеевна  
StudentID BirthDate
  1.1.1992
  23.09.1990
  12.5.1991

Это декомпозиция без потерь, поскольку эти два отношения можно объединить и получится исходное отношение Students.

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

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

Пусть R { А, B, С } – это отношение, где А, B и C – множества атрибутов этого отношения. Если R удовлетворяет функциональной зависимости
А→ B, то R равна соединению ее проекций по атрибутам { А, В } и { А, С }.

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

Пусть дано следующее отношение Students:

StudentID Name
  Казаков Петр Владимирович
  Васильев Иван Аркадьевич
  Шишкина Дарья Сергеевна

Поле Name содержит одновременно фамилию, имя и отчество. Это поле можно разделить на три, тогда получим отношение в 1НФ:

StudentID LastName FirstName MiddleName
  Казаков Петр Владимирович
  Васильев Иван Аркадьевич
  Шишкина Дарья Сергеевна

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

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

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

StudentID LastName FirstName MiddleName Course Score
  Казаков Петр Владимирович информатика  
  Васильев Иван Аркадьевич математика  
  Шишкина Дарья Сергеевна математика  
  Васильев Иван Аркадьевич информатика  

Первичным ключом здесь будет { StudentID, Course }, тогда проанализируем ФЗ этого отношения, где детерминантом является первичный ключ, а в правой части неключевой атрибут. Рассмотрим следующую ФЗ:

{ StudentID, Course } → { LastName }

Очевидно, что она является приводимой, т.к. фамилия зависит только от StudentID, а значит существует ФЗ: { StudentID } → { LastName }.

Следовательно данное отношение не находится во 2НФ. Произведем декомпозицию исходного отношения на следующие два.

Students:

StudentID LastName FirstName MiddleName
  Казаков Петр Владимирович
  Васильев Иван Аркадьевич
  Шишкина Дарья Сергеевна

Scores:

StudentID Course Score
  информатика  
  математика  
  математика  
  информатика  

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

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

StudentID LastName FirstName MiddleName GroupID Supervisor
  Казаков Петр Владимирович   Царев С.М.
  Васильев Иван Аркадьевич   Пестов Д.Н.
  Шишкина Дарья Сергеевна   Царев С.М.

Так как существуют ФЗ: StudentIDGroupID и GroupIDSupervisor, то атрибут Supervisor транзитивно зависит от первичного ключа StudentID. Следовательно отношение не находится в 3НФ. Приведем отношение к 3НФ.

Students:

StudentID LastName FirstName MiddleName GroupID
  Казаков Петр Владимирович  
  Васильев Иван Аркадьевич  
  Шишкина Дарья Сергеевна  

Groups:

GroupID Supervisor
  Царев С.М.
  Пестов Д.Н.

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



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