Частная форма третьей нормальной формы
Определение 3НФ не совсем подходит для следующих отношений:
- Отношение имеет два или более потенциальных ключа;
- Два и более потенциальных ключа являются составными;
- Они пересекаются, т.е. имеют хотя бы один общий атрибут.
Для отношений, имеющих один потенциальный ключ (первичный), НФБК является 3НФ. Отношение находится в
НФБК, когда каждая нетривиальная и неприводимая слева функциональная зависимость обладает потенциальным
ключом в качестве детерминанта.
Предположим, рассматривается отношение, представляющее данные о бронировании стоянки на день:
Номер стоянки |
Время начала |
Время окончания |
Тариф |
1 |
09:30 |
10:30 |
Бережливый |
1 |
11:00 |
12:00 |
Бережливый |
1 |
14:00 |
15:30 |
Стандарт |
2 |
10:00 |
12:00 |
Премиум-В |
2 |
12:00 |
14:00 |
Премиум-В |
2 |
15:00 |
15:80 |
Премиум-А |
Тариф имеет уникальное название и зависит от выбранной стоянки и наличии льгот, в частности:
-
Бережливый
- стоянка 1 для льготников.
-
Стандарт
- стоянка 1 для не льготников.
-
Премиум-А
стоянка 2 для льготников.
-
Премиум-B
стоянка 2 для не льготников.
Таким образом, возможны следующие составные первичные ключи:
[Номер стоянки, Время начала],
[Номер стоянки, Время окончания],
[Тариф, Время начала],
[Тариф, Время окончания].
Отношение находится в 3НФ.
Требования второй нормальной формы выполняются, так как все атрибуты входят в
какой-то из потенциальных ключей, а неключевых атрибутов в отношении нет.
Также нет и транзитивных зависимостей, что соответствует требованиям третьей нормальной формы.
Тем не менее, существует функциональная зависимость Тариф->Номер стоянки, в которой левая часть
(детерминант) не является
потенциальным ключом отношения, то есть отношение не находится в нормальной форме Бойса — Кодда.
Недостатком данной структуры является то, что, например, по ошибке можно приписать тариф "Бережливый" к
бронированию второй стоянки, хотя он может относиться только к первой стоянки.
Можно улучшить структуру с помощью декомпозиции отношения на два и добавления атрибута "Имеет льготы",
получив отношения, удовлетворяющие НФБК:
Тарифы
Тариф |
Номер стоянки |
Имеет льготы |
Бережливый |
1 |
Да |
Стандарт |
1 |
Нет |
Премиум-А |
2 |
Да |
Премиум-В |
2 |
Нет |
Бронирование
Тариф |
Время начала |
Время окончания |
Бережливый |
09:30 |
10:30 |
Бережливый |
11:00 |
12:00 |
Стандарт |
14:00 |
15:00 |
Премиум-В |
10:00 |
12:00 |
Премиум-В |
12:00 |
14:00 |
Премиум-А |
15:00 |
18:00 |