Разложить отношение в форму НФБК

Предположим, у нас есть

R(ABCDE) и функциональные зависимости: {AB -> C, B -> C, C -> D}, преобразовать это в BCNF.

Я вижу, что потенциальным ключом для R является ABE, так что его явно нет в BCNF.

Чтобы разложить, я создал эти отношения:

R1(ABC)
R2(BC)
R3(CD)
R4(ABE)

Это работает?


person seq    schedule 14.08.2019    source источник
comment
Правильно ли это: Покажите этапы вашей работы, следуя вашему справочнику/учебнику, с обоснованием - вы можете найти ошибки, из-за которых ваш вопрос не нужен, и мы хотим проверить вашу работу, но не переделывать ее, и нам нужен ваш выбор, когда алгоритм позволяет их, иначе мы не сможем сказать вам, где вы ошиблись, а где вы ошиблись, и мы не хотим переписывать ваш учебник. См. раздел Как задать вопрос, нажмите "Домашнее задание stackexchange" и наведите указатель мыши на текст со стрелкой голосования. Итак, вы говорите нам, почему это работает.   -  person philipxy    schedule 14.08.2019


Ответы (1)


Если приведенные функциональные зависимости являются покрытием функциональных зависимостей, содержащихся в R, применение так называемого алгоритма «анализа» приводит к следующему разложению:

R2 (ABE)
R3 (CD)
R4 (BC)

Начнем с рассмотрения минимального покрытия зависимостей. Это:

B → C
C → D

(поскольку в AB → C мы можем заметить, что A отчужденно, так как мы уже имеем, что B → C).

Итак, поскольку B → C нарушает НФБК, мы разлагаем R на два соотношения:

R1 (BCD), with candidate key B
R2 (ABE), with candidate key ABE

Во втором отношении нет нетривиальных функциональных зависимостей, поэтому оставляем его как есть, а в R1 единственным ключом-кандидатом является B, поэтому C → D нарушает НФБК и разлагаем его на:

R3 (CD)
R4 (BC)

поэтому окончательное разложение равно R2, R3 и R4. Обратите внимание, что эта декомпозиция сохраняет функциональные зависимости (не всегда это возможно с этим алгоритмом).

person Renzo    schedule 14.08.2019
comment
› Обратите внимание, что эта декомпозиция сохраняет функциональные зависимости (не всегда это возможно с этим алгоритмом). Огромное спасибо! Можете ли вы сказать мне, насколько это правда? Функциональная зависимость AB -> C исчезла? - person seq; 15.08.2019
comment
@seq, если вы присоединитесь к разложенным отношениям, AB → C может быть получено через B → C. В общем, многие зависимости могут быть получены из других. По этой причине удобно найти минимальное (или каноническое) покрытие перед применением алгоритмов нормализации. - person Renzo; 15.08.2019