База данных посторонних атрибутов и декомпозиция - PullRequest
2 голосов
/ 26 июля 2011

Я немного запутался в понятии посторонних атрибутов и правильного разложения на 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 посторонним в

BC -> 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 Ответ

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

Некоторые из ваших замыканий неверны (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}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...