2017-04-03 13 views
0

割り当て:属性が他のものとは関係がないときに分解をBCNFする方法

関係を考えてみましょう(,,,,,,)とそのFDの集合= {→、→、→、→ 、→、→}。 BCNFにない場合は、それをBCNF関係の集合に分解します。あなたの分解が損失のない結合であることを確認してください。

説明

こんにちは、私は私のデータベースの宿題に取り組んでいます(リレーションデザインの章)。 私は、クラス内の事例に基づいて基本的なプロセスを命じたと思います。 しかし、ここでの扱いにくい部分は、他と関係のない属性「H」を持っているため、私を深く混乱させます。私はそれをどのように扱うべきですか?

未遂答え

• We start from a schema: ABCDEGH, since H has no relations with any attribute, we decompose it into tables: H and ABCDEG 
• The FDs for ABCDEG remains the same, therefore key is E. 
• The FD D →AG violates BCNF (FD with non-key on LHS). 
• To fix, we need to decompose into tables: ADG and BCDE 
• FDs for ADG are { D → AG }, therefore key is D, therefore BCNF. 
• FDs for BCDE are { B → CD,  E → D,  BC → DE, E → B, CD → BE } 
• Key for BCDE is also E, and FD B → CD violates BCNF (FD with non-key on LHS). 
• To fix, we need to decompose into tables: BCD and BE 
• FDs for BCD are { B → CD } therefore key is B, therefore BCNF. 
• FDs for BE are { E → B } therefore key is E, therefore BCNF. 
• Final schema:  H, ADG, BCD, BE 

私の過ちについてのご意見は何ですか?

+0

ステップ1が間違っています。どのようなリファレンスを使用していますか? – philipxy

+0

"同じまま"とはどういう意味ですか?あなたはABもCKだと気づいていますか?あなたは関係が複数のCKを持つことができることを認識していますか?アルゴリズムをフォローしているとき、またはそれに参照をつけているときは、それに続く部分のトレースだけでなく、それを参照してください。また、「他人との関係がない」という用語は、専門用語としての使用方法が異なるという意味で、一般的な意味で「関係」を使用しています。あなたは、Hが他の属性を持つ任意のFDに言及されていないことを意味します。 – philipxy

答えて

0

最初の箇条書きが間違っています。あなたが従おうとしているBCNF分解アルゴリズムを持つリファレンスに行くと、そのステップはありません。最後に、FDに記述されていない属性(関数の依存関係)をFDごとに生成されたBCNFコンポーネントスキーマの1つに追加するとします。

関連する問題