Нормальная форма Бойса — Кодда
Следует отметить, что определение для ЗНФ было дано Коддом для ситуаций с упрощающим картину допущением того, что отношение имеет только один потенциальный ключ, который, естественно, и является первичным ключом. Естественно, что не все отношения могут быть уложены в данные довольно жесткие рамки. Более обобщающими являются случаи, когда в наличии имеются следующие условия:
· отношение имеет два (или более) потенциальных ключа;
· два потенциальных ключа являются составными;
· два потенциальных ключа перекрываются, т. е. имеют, по крайней мере, один общий атрибут.
Схема отношения R находится в НФБК относительно множества F- зависимостей тогда и только тогда, когда детерминанты являются потенциальными ключами.
Допустим, что при проектировании базы данных ПОСТАВКИ_ТОВАРОВ рассматривается отношение: ПОСТАВКА (Индекс_поставщ, Имя_поставщ, Индекс_товара, Колич_товара).
Допустим также, что значения атрибута Имя_поставщ уникальны и могут быть использованы наряду с атрибутом Индекс_поставщ для идентификации поставщика. В такой ситуации можно выделить два составных потенциальных ключа:
(Индекс поставщ, Индекс_товара);
(Имя_поставщ, Иидекс_товара).
В рассматриваемом отношении есть два атрибута Индекс_поставщ и Имя_поставщ, которые идентифицируют один и тот же экземпляр 73 сущности, а, значит, они определяют друг друга. В таком случае отношение содержит два детерминанта, но эти детерминанты не являются потенциальными ключами отношения. Сложившаяся картина противоречит данному выше определению НФБК, и следовательно, данное отношение не находится в НФБК.
Для схемы отношения, не находящейся в НФБК, можно провести декомпозицию в схему БД в НФБК. Из исходного отношения убирается и переносится в новое отношение зависимая часть вместе с копией детерминанта.
Для рассматриваемого примера решение проблемы можно осуществить, разбив исходное отношение на два. Причем поскольку два детерминанта Индекс_поставщ и Имя_поставщ определяют друг друга, то возможны два равносильных варианта декомпозиции, приводящей к НФБК.
Первый вариант получается, если учитывается зависимость
Индекс_поставщ → Имя_поставщ,
в результате чего имеем следующих два отношения:
ПОСТАВКА (Иидекс_поставщ, Индекс_товара, Колич_товара);
ПОСТАВЩИК (Индекс_поставщ, Имя_поставщ),
Второй вариант исходит из зависимости
Имя_поставщ → Индекс_поставщ,
в результате чего получаем альтернативную группу отношений;
ПОСТАВКА (Имя_поставщ, Индекс_товара, Колич_товара);
ПОСТАВЩИК (Индекс_поставщ, Имя_поставщ).
Дата добавления: 2016-07-05; просмотров: 2709;