2016-11-17 4 views
1

BCNFでリレーションシップをリレーションシップに翻訳する際に問題が発生しました。だからまず第一に私はそれを3NFに変換しなければならなかった。だからここに私が持っているもの。このBCNF変換は正しいですか?

送料(船舶、容量、日付、貨物、価値)PK:船舶、日付。 (容量、貨物) - >値:

FD:船舶 - >容量、(船舶、日付) - >貨物、容量

ここで私は3NFに変換したときに何を得ましたか?

R1(船舶、日付、カーゴ)PK:船、日付 R2(船、容量)がPK:船 R3(Calacity、貨物、値)PK:Calacity、貨物

ように、第1及び第2満足

  1. シップ以来BCNF、日付はR1の主キーであるとR1ののみ利用可能FDは、 船、日です - >貨物及び
  2. 船は、R2の主キーであるとR2ののみ利用可能FDがあります船 - >容量。

しかし、R3は貨物と容量が送料の鍵ではないためではありません。だから私は、別の関係を確認する必要がありR4ように、その

R4(船舶、容量、貨物)

だから、誰かが私の結果を確認することができますしてください?私は最近、BCNFを勉強しています。

+0

そのアルゴリズムについて説明してください。私は新しい関係を作るときそれを理解できません。この関係の例として、BCNFの船舶 - >容量FDがありますか? – 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は1つを引用するようです。

PS「利用可能なFDのみ」についてのあなたの推論は不健全です。おそらくカバーであるいくつかのFDセットが与えられます。 (つまり、それ以降のFDだけが保持されます)。つまり、他のFDを保持できるということは、いくつかの属性が関係することを意味します。したがって、FDが保持しなければならない他の属性を使用しないコンポーネントでは、たとえカバーに含まれていなくても。あなたは最小限のカバーを計算する方法を学ぶ必要があり、最小限のカバーが与えられれば、「一連の属性のクロージャー」を計算する方法を学ぶ必要があります。次に、属性を削除すると、保持されているFDが残りの属性の集合の中にあるものである場合、その属性をカバーします。上記のリンクのアルゴリズムは、一連のFDの閉包から(時には元の関係のために、時にはそれの構成要素のために)保持するFDを繰り返し見つけることを含むことに留意されたい。あなたが始まったカバーだけではありません。

PPS PKsは無関係です。候補キーが重要です。 PKはあなたがPKと呼ぶために選んだCKの一部です。

関連する問題