На этой неделе у меня промежуточный экзамен по базам данных, и у меня возникли проблемы с выявлением нарушений BCNF. Я знаю, как декомпозировать отношения и найти, где ключ, а где суперключ. Я также могу выписать подразумеваемые FD. Я смотрел следующее видео: https://www.youtube.com/watch?v=hTFyG5o8-EA.
Подводя итог, дама, объясняющая, начинает применять алгоритм НФБК к следующему отношению (она использует пример студента, но я преобразовал его в буквы для упрощения):
R(A, B, C, D, E, F, G, H) с ФД: A -> BCG, G -> H, D -> EF.
Я знаю, что ключ AD, потому что его замыкание AD+ = ABCDEFGH. Она говорит, что все представленные ФД являются нарушениями, и начинает применять алгоритм:
Попытка BCNF №1:
R1 = D -> EF (D+ = DEF) // нарушения нет, но почему? Разве это не было просто нарушением?
R2 = ABCDEFG - (DEF - D) = ABCDGH // нарушение, тоже непонятно почему? Он содержит оба ключа.
Попытка BCNF №2 на R2:
R3 = G -> H (G+ = GH) // нарушения нет, потому что только два атрибута GH, я полагаю
R4 = ABCDG // нарушение, но я не знаю почему.
Попытка BCNF №3 на R4:
R5 = A -> BCG // нет нарушения (?)
R6 = AD // нарушений нет (?)
Последние отношения: R1, R2, R5, R6.