Нормальная форма Бойса-Кодда
Причиной отмеченных аномалий является то, что в требованиях 2NF и 3NF не требовалась минимальная функциональная зависимость от первичного ключа атрибутов, являющихся компонентами других возможных ключей. Проблему решает нормальная форма, которую исторически принято называть нормальной формой Бойса-Кодда, и которая является уточнением 3NF в случае наличия нескольких перекрывающихся возможных ключей.
Определение 7.3. Нормальная форма Бойса-Кодда
Переменная отношения находится в нормальной форме Бойса-Кодда (BCNF в том и только в том случае, когда любая выполняемая для этой переменной отношения нетривиальная и минимальная FD имеет в качестве детерминанта некоторый возможный ключ данного отношения. Конец определения.
Переменная отношения СЛУЖ_ПРО_ЗАДАН1 может быть приведена к BCNF путем одной из двух декомпозиций: СЛУЖ_НОМ_ИМЯ{СЛУ_НОМ, СЛУ_ИМЯ}и СЛУЖ_НОМ_ПРО_ЗАДАН{ СЛУ_НОМ, ПРО_НОМ, СЛУ_ЗАДАН}с множеством FD и значениями, показанными на рис. 7.8, и СЛУЖ_НОМ_ИМЯ{СЛУ_НОМ, СЛУ_ИМЯ}и СЛУЖ_ИМЯ_ПРО_ЗАДАН{СЛУ_ИМЯ, ПРО_НОМ, СЛУ_ЗАДАН}(FD и значения результирующих переменных отношений выглядят аналогично).
Диаграммы FD отношений СЛУЖ_НОМ_ИМЯи СЛУЖ_НОМ_ПРО_ЗАДАН
Значение переменной отношения СЛУЖ_НОМ_ИМЯ
СЛУ_НОМ | СЛУ_ИМЯ |
Иванов | |
Иваненко |
Значение переменной отношения СЛУЖ_ПРО_ЗАДАН
СЛУ_НОМ | ПРО_НОМ | ПРО_ЗАДАН |
A | ||
B | ||
B | ||
A |
Рис. 7.8. Диаграммы FD и значения переменных отношений
СЛУЖ_НОМ_ИМЯи СЛУЖ_НОМ_ПРО_ЗАДАН
Очевидно, что каждая из декомпозиций устраняется трудности, связанные с обновлением отношения СЛУЖ_ПРО_ЗАДАН1.