Что происходит, когда функциональная зависимость является круговой? - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь разложить следующие отношения на 3NF:

A -> BCD
BC -> DE
C -> D
D -> A

Поэтому я устранил избыточность, чтобы получить каноническое покрытие:

A -> BC
B -> E
C -> D
D -> A

И теперь я пытаюсьразложить это на 3NF.

Должен ли я разложить на r1(A, B, C) r2(B, D), r3(C, D).Тогда что мне делать с D -> A?

Тот факт, что A -> B -> D -> A сбивает меня с толку.

1 Ответ

1 голос
/ 08 апреля 2012

Учитывая

A -> BCD
BC -> DE
C -> D
D -> A

, чтобы получить каноническое покрытие, мы сначала удаляем D из BC-> DE:

A -> BC
BC -> E
C -> D
D -> A

Далее мы наблюдаем, что C-> D, D->A, A-> BC, и если мы знаем B-> E, то мы также знаем C-> E.Следовательно,

A -> BC
B -> E
C -> D
D -> A

3NF декомпозиция работает следующим образом:

1) Создание таблиц для каждой зависимости в каноническом покрытии

R1(A,B,C) R2(B,E) R3(C,D) R4(A,D)

2) Определение ключей-кандидатов в RЕсли в таблицах шага 1 нет ключей-кандидатов, добавьте новую таблицу, содержащую только атрибуты ключа-кандидата.

Здесь A - ключ-кандидат, и он содержится в R1 (и R4), поэтомуновые таблицы добавлять не нужно.

3) Если есть таблица, в которой ее атрибуты являются подмножеством атрибутов другой таблицы, удалите «содержащуюся» таблицу.

Это неприменимотаким образом, разложение 3NF остается неизменным.

Как видите, циклические зависимости не являются проблематичными.

...