2016-11-17 4 views
1

У меня возникла проблема, связанная с переводом отношения к отношениям в BCNF. Поэтому в первую очередь мне пришлось преобразовать это в 3NF. Итак, вот что я получил.Правильно ли это преобразование BCNF?

Отгрузка (судно, мощность, дата, груз, стоимость) PK: Корабль, дата.

FDs: Ship-> Capacity, (Ship, Date) -> Cargo, (Capacity, Cargo) -> Значение.

Вот что я получил, когда преобразован в 3NF.

R1 (корабль, дата, Грузовой) Кол-во: Корабль, дата R2 (корабль, емкости) Кол-во: Корабль R3 (Calacity, Грузовой, Значение) PK: Calacity грузов,

Так первый и второй удовлетворяет BCNF так

  1. корабль, дата является первичным ключом R1 и только FD из R1 есть, Ship, дата -> Грузовые и
  2. судно является первичным ключом R2 и доступны только FD R2, является Ship-> Capacity.

Но R3 не потому, что Cargo и Capacity не являются ключом к доставке. Так что я должен сделать еще одно соотношение R4 таким образом, что,

R4 (Ship, емкости, Cargo)

Поэтому, пожалуйста, может кто-то проверить мой результат? Я изучаю BCNF в эти дни.

+0

Не могли бы вы объяснить, что алгоритм? Я не могу понять, что при создании новых отношений. В качестве примера в этом отношении стоит Ship-> Capacity FD в BCNF? – User9125

+0

PK отгрузки является Корабль и дата. – User9125

+0

Существует стандартный алгоритм для разложения на BCNF. Определение того, является ли отношение * в * BCNF, является другим алгоритмом/тестом. (И это часть предыдущего алгоритма.) (Найдите определение BCNF.) Получите, насколько сможете, затем отправьте вопрос о том, где вы собрались, указав, какие ссылки вы используете, и попросите, что вам нужно открепить , – philipxy

ответ

0

Стандартный алгоритм разложения на BCNF принимает какое-либо отношение. Вам не нужно сначала разлагаться на 3NF. Google «алгоритм BCNF», чтобы найти учебник или презентацию колледжа/университета. Хотя https://dba.stackexchange.com/questions/139322/decompose-this-relation-into-bcnf, кажется, цитирует один.

PS Ваши рассуждения о «только доступных FD» являются необоснованными. Вам предоставляется набор FD, который предположительно является обложкой. (Т. Е. Сохраняются только FD, которые следуют из них). Это означает, что другие FD могут содержать эти атрибуты только с некоторыми атрибутами. Поэтому в компоненте, который не использует другие атрибуты, которые должен содержать FD, даже если он не был в обложке. Вам нужно научиться вычислять «минимальное покрытие», а затем как вычислять «закрытие набора атрибутов» при минимальном покрытии. Затем, когда вы отбрасываете атрибуты, а удерживаемые FD - это те, которые находятся в закрытии набора оставшихся атрибутов, у вас есть обложка для них. Обратите внимание, что алгоритм в ссылке выше включает в себя многократное обнаружение FD, который удерживает (иногда для исходного отношения, а иногда и для его компонента) от замыкания множества FD. Не только с какой-то крышкой, с которой вы начали.

PPS PK не имеют значения. Ключи кандидата имеют значение. PK - это всего лишь CK, который вы выбрали для вызова ПК.

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