2013-07-18 2 views
1

Я пытаюсь понять, как нормализовать отношение в форме BCNF. Я знаю, что такое определение BCNF, и я знаю, что для его нормализации мне нужно устранить каждый D -> X, где D не является частью ключевого кандидата. И создать новые таблицы (D,X) и (S,X).Как нормализовать таблицу в форме BCNF

Я также прочитал это темы:

  1. Normalisation into BCNF
  2. BCNF Decomposition
  3. Difference between 3NF and BCNF

Но проблема я столкнулся в том, как использовать алгоритм, когда X является частью супер ключ. поясню:

Предположим, что мы имеем это соотношение:

R = (a,b,c,d,e) 
FD = { {a,b}->{c} , {a,b}->{d} , {a,b}->{e} , {d}->{b} } 

Очевидно, что только супер ключ является (a,b). И, очевидно, d не является ключевым кандидатом.

Нарушение BCNF, но мы не можем просто взять b из-за того, что он является частью супер ключа.

Так что мой вопрос: в этом случае, как мы можем нормализовать это отношение в форме BCNF?

+0

Я предполагаю, что F должен представлять функциональные зависимости, но я не могу сказать, что на самом деле есть FDs - нотация неоднозначна. Может быть, вы имеете в виду '{a, b} ⟶c; {А, Ь} ⟶d; {А, Ь} ⟶e; d⟶b'? где я не использовал set '{}' для одиночных наборов. Просьба уточнить набор FD. –

+0

Да, по 'f' I ment' FD'. Я отредактировал, спасибо. Что касается обозначений, я слежу за тем, что я видел до сих пор во многих местах. –

+0

Да, я нахожусь в FD, который вы написали. Отредактировал это также. –

ответ

0

Answearing свой вопрос (с большой помощью Джонатана Леффлера):

Это соотношение должно быть нормализуют в:

R1 = (a,b,c,e). super-key is (a,b). 
R2 = (b,d). super-key is (d). 

Т.е. каждый раз, когда схема S есть FD D->X кто нарушает BCNF:

If D не является частью ключа новые таблицы (D,X) и (S,X).
Если Dявляется частью ключа, то новые таблицы: (D,X) и (S,D).
Если оба значения D и X являются частью ключа, то отношение не может нормализоваться в BCNF.

+0

Я так не думаю. Что случилось с AB-> D? –

+0

@ MikeSherrill'Catcall 'BCNF НЕ обязательно сохраняет исходные функциональные зависимости. –

+0

Я знаю. Но неясно, считаете ли вы, что R1 и R2 являются разложением BCNF R. (Оба * D * и * X * являются частью ключа кандидата.) –

Смежные вопросы