База данных посторонних атрибутов и декомпозиция

Я смущен понятием посторонних атрибутов и правильного разложения на 3NF.

Например, у меня есть следующее отношение:

r(A,B,C,D,E,F)

F = FD's
F = {A-> BCD, BC-> DE, B->D, D->A}

Я хочу вычислить каноническое покрытие, чтобы разложить его на 3NF, используя алгоритм. Поэтому я должен удалить посторонние атрибуты из FD.

Я вычислил A+. B+, C+, D+ (A+ = ABCDE, B+ = BD, C+ = C, D+ = AD)Я начал пытаться найти посторонние атрибуты. Сначала я посмотрел на атрибуты в β

Я пытался найти, если D посторонний в

До н.э. -> DE

и с помощью BC+ я обнаружил, что D является посторонним (поскольку BC+ содержит атрибут D). Так что теперь мой FD изменился с BC -> DE to BC -> EТеперь я попытался вычислить посторонние атрибуты для α.

Я посмотрел, является ли B или C посторонним в FD BC -> DE (Вычисление B+ и C + привело меня к тому, что ни B, ни C не были посторонними, поскольку ни один из них не содержал E).

Я также посмотрел на посторонние атрибуты в A -> BCD и обнаружил, что B и C посторонние (поскольку A+ содержит все атрибуты). Так что я остался со следующим:

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

Извините за очень длинный вопрос, я просто хотел записать, что я сделал.

Я не понимаю, правильно ли это, или я делаю это правильно. Я пытаюсь следовать некоторым примечаниям и некоторым онлайн-ссылкам, но было бы неплохо, если бы кто-то мог указать, правильно ли я делаю это, и если нет, попытаться объяснить что-то, как правильно найти посторонние атрибуты и разложить их.

1 ответ

Некоторые из ваших замыканий неверны (B+ = ABCDE, например, из-за B-> D, D-> A, A-> BCD, BC-> DE).

B и C не являются посторонними в A-> BCD. Действительно, замыкание А по отношению к

{A -> D, BC -> E, B -> D, D -> A}

это AD, а не ABCDE.

Итак, давайте вернемся к вашему предыдущему шагу:

{A-> BCD, BC-> E, B-> D, D-> A}

D является посторонним в A-> BCD, так как A-> B и B-> D. Мы исключаем D из A-> BCD и получаем:

{A-> BC, BC-> E, B-> D, D-> A}

C посторонний в BC-> E. Действительно, B-> D, D-> A, A-> BC. Следовательно,

{A-> BC, B-> E, B-> D, D-> A}

Далее мы объединяем все fds с одной левой стороны:

{A-> BC, B-> DE, D-> A}

Этот набор функциональных зависимостей не содержит избыточных зависимостей или посторонних атрибутов и, следовательно, является каноническим покрытием.

Другие вопросы по тегам