推奨チュートリアル: FAQ
前提: 関係性モード R(U, F)、U=ABCDEG、F={B->D、DG->C、BD->E、AG->B、ADG->BC}
F
の最小関数依存関係セットを見つける ステップ:
① 分解ルールを使用します、Make F の関数依存関係の右側の部分には属性が 1 つだけ含まれます;
② 冗長な関数依存関係を削除します:最初の関数依存関係 X→Y から始めて F から削除し、次にクロージャ X を見つけます。残りの関数依存関係の X を調べて、X に Y が含まれているかどうかを確認します。含まれている場合は、削除します。冗長な関数の依存関係が見つからなくなるまで;
③各依存関係の左側にある冗長な属性 を削除します。関数の依存関係を 1 つずつ確認し、左側の非個別プロパティへの依存関係を確認します。例えば、XY→Aを冗長と判定する場合、XY→AをX→Aに置き換えることと同じでしょうか? A が (X) に属する場合、Y は冗長な属性なので削除できます。
解決策:
(1)
右辺が最も単純かどうかを判断します。F が得られます。 ={B->D,DG->C,BD->E,AG->B,ADG->B,ADG->C}
(2)
① B->D が冗長であると仮定し、B->D を削除すると、 G={DG->C,BD->E,AG->B, ADG->B,ADG->C}B =B には D が含まれないため、冗長ではないため削除できません。
② DG->C が冗長であると仮定して、DG->C を削除すると、 G={B->D,BD->E,AG->B,ADG-> が得られます。 ;B,ADG->C}(DG) =DG には C が含まれていないため、冗長ではないため削除できません。
③ BD->E が冗長であると仮定して、BD->E を削除すると、 G={B->D, DG->C, AG->B, ADG-> が得られます。 ;B,ADG->C}(BD) =BD には E が含まれていないため、冗長ではないため削除できません。
④ AG->B が冗長であると仮定して、AG->B を削除すると、G={B->D, DG->C, BD->E, ADG-> が得られます。 ;B,ADG->C}(AG) =AG には B が含まれていないため、冗長ではないため削除できません。
⑤ ADG->B が冗長であると仮定して、ADG->B を削除すると、G={B->D, DG->C, BD->E, AG-> が得られます。 ;B,ADG->C}(ADG) =ABCDEG には B が含まれるため、冗長であるため削除する必要があります。
⑥ADG->C が冗長であると仮定して、ADG->C を削除すると、次のようになります。 G={B->D, DG->C, BD->E, AG->; B}(ADG) =ABCDEG には C が含まれているため、冗長なので削除する必要があります。
要約: F={B->D, DG->C, BD->E, AG->B}
(3)
① D->C が冗長であると仮定すると、D =D には C が含まれないため、G は削除できません。
② G->C が冗長だとすると、G =G には C が含まれないので、D は削除できません。
③ B->E が冗長だとすると、B = BD には E が含まれないため、D は削除できません。
④ D->E が冗長だとすると、D =D には E が含まれないので、B は削除できません。
⑤A->Bが冗長だとすると、A=AにはBが含まれないのでGは削除できません。
⑥G->Bが冗長だとすると、G =GにはBが含まれないので、Aは削除できません。
したがって、Fm={B->D、DG->C、BD->E、AG->B}
以上が最小の関数依存関係セットを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。