Третья нормальная форма

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

На рисунке 7 приведено отношение, не удовлетворяющее 3НФ.

СТУДЕНТ 6

Код студента Ф.И.О. Дата рождения Адрес общежития Ф.И.О. коменданта общежития
         
Гончар Е.Г 29.01.1970 Ерошевского 53 Афанасьв А.В
Ермолова А.Г. 19.09.1985 Панова 63 Листьев Л.О
Курник П.В. 28.02.1975 Панова 63 Листьев Л.О
         

Рисунок 7 Отношение, не удовлетворяющее третьей нормальной форме

В этом примере ключ состоит из одного атрибута код студента, атрибут Ф.И.О. коменданта общежития однозначно связан с не ключевым атрибутом адрес общежития, где проживает студент, т.е. функционально зависит от него (точно также как и от ключа). Естественно, одно и тоже значение атрибута Ф.И.О. коменданта общежития будет повторяться во всех кортежах, относящихся к студентам, проживающим в одном и том же общежитии. При использовании такого ненормализованного отношения также возникают проблемы корректного обновления (изменения фамилии коменданта) и выборки кортежей.

Приведение отношения к 3НФ заключается в разбиении исходного отношения на два (рисунок 8), одно из которых есть исходное отношение без атрибутов, зависящих от не ключевого атрибута. Второе отношение состоит из атрибута, от которого в исходном отношении зависели исключенные атрибуты (оно станет ключом в новом отношении) плюс атрибуты, исключенные из исходного отношения.

СТУДЕНТ 7

Код студента Ф.И.О. Дата рождения Адрес общежития

СТУДЕНТ 8

Адрес общежития Ф.И.О. коменданта общежития

Рисунок 8 – Результат нормализации отношения СТУДЕНТ

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

Именованное множество пар "имя атрибута - имя домена" называется схемой отношения. Мощность этого множества - называют степенью или "арностью" отношения. Набор именованных схем отношений, представляет из себя схему базы данных.

Отношение может содержать несколько ключей. Всегда один из ключей объявляется первичным, его значения не могут обновляться. Понятие первичного ключа — это такой набор атрибутов, который однозначно определяет кортеж и минимален среди всех своих подмножеств (то есть нельзя убрать ни один из атрибутов). При добавлении новых записей первичный ключ обязан оставаться первичным ключом (например, неверным будет использование в качестве первичного ключа набора Имя + Отчество + Фамилия сотрудника, даже если на момент создания таблицы полных тёзок среди заносимых в неё людей не было).

В теории реляционных баз данных таблица представляет собой изначально неупорядоченный набор записей. Единственный способ идентифицировать определённую запись в этой таблице — это указать набор значений одного или нескольких полей, который был бы уникальным для этой записи. Отсюда и происходит понятие первичного ключа — набора полей (атрибутов, столбцов) таблицы, совокупность значений которых определена для любой записи (строки) этой таблицы и различна для любых двух записей.