Нормальная форма Бойса-Кодда. В рассмотренных выше примерах в отношениях был определен только один ключ

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

- отношение имеет несколько потенциальных ключей,

- потенциальные ключи являются составными,

- потенциальные ключи имеют общие атрибуты.

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

Рассмотрим следующий пример.

Пусть определено отношение ОБУЧЕНИЕ с атрибутами S (студент), P (предмет) и T (преподаватель). Для этого отношения в предметной области определены следующие условия (функциональные зависимости):

1. Каждый студент изучает некоторый предмет под руководством только одного преподавателя: (S, P) à T

2. Каждый преподаватель проводит занятия только по одному предмету: T à P

Пример реализации такого отношения:

S P T
Иванов Математика Петров
Иванов Физика Михайлов
Сидоров Математика Петров
Сидоров Физика Михайлов
Сергеев Химия Дымов

Данное отношение имеет составной ключ (S, P):

а) из функциональных зависимостей (S, P) à T (условие 1) и (S, P) à (S, P) (правило рефлексивности) следует (S, P) à (S, P, T) (правило аддитивности);

б) не выводятся зависимости S à (S, P, T) или P à (S, P, T).

Покажем, что данное отношение имеет еще один составной ключ (S, T):

а) из функциональных зависимостей T à P (условие 2) и (P, S) à (P, S, T) (или (S, P) à (S, P, T), доказано выше) по правилу транзитивности следует (T, S) à (P, S, T), или (S, T) à (S, P, T);

б) так же не выводятся зависимости T à (S, P, T) или S à (S, P, T).

Легко убедиться в том, что данное отношение находится в 3НФ.

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

Определение

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

Напомню, что в определении функциональной зависимости: f: X à Y левая часть (X) называется детерминантом. Кроме того, рассматриваются только нетривиальные функциональные зависимости.

В приведенном выше примере определена функциональная зависимость T à P, но детерминант T не является потенциальным ключом. Следовательно, данное отношение не находится в НФБК.

Для данного отношения можно выполнить декомпозицию, используя функциональную зависимость T à P: E1(T, P) – преподаватель проводит занятия по определенным предметам, и E2(S, T) – студент обучается у преподавателя. Однако следует отметить, что такая декомпозиция не сохраняет функциональные зависимости, а значит, некоторые данные в этих двух отношениях не могут обновляться независимо. Например, если вместо какого-либо преподавателя, проводящего занятия по предмету, назначается другой преподаватель, необходимо изменить соответствующие кортежи и в отношении E1, и в отношении E2.

Примечание: при проектировании с использованием IDEF1x подобная ситуация выглядит следующим образом. В соответствии с заданными функциональными зависимостями определяются сущности ПРЕДМЕТ, ПРЕПОДАВАТЕЛЬ и ПРЕДМЕТ СТУДЕНТА (предмет, изучаемый студентом). Очевидно, что имеются связи типа 1:N между сущностями ПРЕДМЕТ и ПРЕПОДАВАТЕЛЬ, ПРЕДМЕТ и ПРЕДМЕТ СТУДЕНТА.

Кроме того, так как студент изучает предмет под руководством определенного преподавателя, имеет место и связь между сущностями ПРЕДМЕТ СТУДЕНТА и ПРЕПОДАВАТЕЛЬ. В результате сущность ПРЕДМЕТ СТУДЕНТА не удовлетворяет НФБК.

Из концептуальной схемы видно, что связь между сущностями ПРЕДМЕТ и ПРЕДМЕТ СТУДЕНТА является лишней: так как каждый преподаватель ведет занятия только по одному предмету, можно выяснить, какой предмет изучает студент, зная, какой преподаватель проводит занятия с этим студентом. Эту связь следует удалить, в результате чего сущность ПРЕДМЕТ СТУДЕНТА будет удовлетворять НФБК.

Следует иметь в виду, что подобные связи не всегда являются лишними. Рассмотрим следующий пример. Имеются сущности ПОСТАВЩИК и ТОВАР, для которых определено следующее условие: каждый товар поставляется только одним поставщиком (но поставщик может поставлять много товаров). Кроме того, имеется сущность ГОРОД. Каждый поставщик дислоцируется в определенном городе, и каждый товар производится в определенном городе.

В данном примере связь между сущностями ГОРОД и ПОСТАВЛЯЕМЫЙ ТОВАР не является лишней, так как поставщик может быть дислоцирован в одном городе, а поставляемый им товар производится в другом городе. Это означает, что, по сравнению с предыдущим примером, здесь отсутствует функциональная зависимость (G, C) à P, или в сущности ПОСТАВЛЯЕМЫЙ ТОВАР нет альтернативного ключа (G, C).


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



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