База данных посторонних атрибутов и декомпозиция
Я смущен понятием посторонних атрибутов и правильного разложения на 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}
Этот набор функциональных зависимостей не содержит избыточных зависимостей или посторонних атрибутов и, следовательно, является каноническим покрытием.