Правильно ли мое применение NF Бойса-Кодда в этом упражнении?

ЭКЗАМЕН повторение, а не домашнее задание.

Я работаю над этим упражнением, и я хотел бы проверить, хорошо ли мое решение:

При следующем соотношении R и наборе функциональных зависимостей F: R = {A,B,C,D,E,F,G,H,I} F= {{C,D} -> {A}, {G} -> {E}, {C,D,E} -> {G,B,H}, {B} -> {F}, {H} -> {I}} разлагают R на отношения, удовлетворяющие Нормальная форма Бойса-Кодда.

Мой ответ: BOLD — это первичный ключ.

(C,D,A)

(C,D,E,B ,ЧАС)

(В,F)

(H,I)

(G,C,D)

(E,G)


person chris loughnane    schedule 06.03.2013    source источник


Ответы (1)


Я думаю, что первые четыре, которые вы получили, все в 5NF.

  • {G компакт-диск}
  • {EG}

Но эти двое выглядят не так.

Во-первых, одним из ваших FD является G->E. В отношении, которое содержит только G и E, как вы определили, что правильная декомпозиция

  • {EG}

вместо

  • {Г Э}

учитывая, что FD G->E все еще должен держаться?

На первый взгляд, я не понимаю, как вы можете получить G-> CD из FD, которые вы дали.

person Mike Sherrill 'Cat Recall'    schedule 07.03.2013
comment
Согласно этой странице: en.wikipedia.org/wiki/Boyce%E2%80 %93Codd_normal_form Achievability of BCNF Я пытался зафиксировать: {AB → C, C → B}. Я действительно запутался в этом. - person chris loughnane; 07.03.2013
comment
Спасибо за участие, @Mike. Я попробую еще раз, одно из правил, которые у меня есть, заключается в том, что если {X->Y} нарушает BCNF, разложить R (все атрибуты) на {R-Y} и {XY}. Итак, я сделал R={C,D,E,G}-{E} = {C,D,G}, и мой X равен {G}, а мой Y равен {E}, поэтому я получаю {G,E}. Но в моем первоначальном вопросе я не показал правильные составные первичные ключи, поэтому они должны были быть {***C***,***D***,***G***} и {***G***,***E***}. Я действительно надеюсь, что справлюсь с этим, или у меня проблемы :) [не могу выделять в комментариях] - person chris loughnane; 07.03.2013
comment
Это сложно сделать в поле для комментариев: возьмите это отношение R {studentID, Final, Advisor} и некоторые записи {{1,IT,Smith},{1,ECON,Murphy},{2,ECON,Murphy},{3, IT,Smith}} и разложить на 2 таблицы: {{studentID,Final}->{Advisor},{Advisor}->{Final}}. В нынешнем виде, если studentID=1 изменится с ECON на BIOLOGY, консультант Мерфи теперь будет указывать на неправильный Final. Поэтому, чтобы этого не произошло, мы должны избавиться от некоторой функциональной зависимости от корректности. Применение того, что я сделал в предыдущем комментарии, помогает в этом. Другой способ - установить триггеры в вашей БД. - person chris loughnane; 08.03.2013
comment
Вы не ответили на мой вопрос: где вы узнали об этом правиле? Ваше разложение R = {studentID, Final, Advisor} неверно. Быстрая проверка: декомпозиция по проекции всегда дает отношение с меньшим количеством атрибутов, чем вы начали. - person Mike Sherrill 'Cat Recall'; 08.03.2013
comment
Извините, у меня начались экзамены, и мне нужно было сосредоточиться. Решение, которое я упоминаю, принадлежит моему лектору. - person chris loughnane; 26.03.2013