ホームページ  >  記事  >  最小の関数依存関係セットを見つける方法

最小の関数依存関係セットを見つける方法

angryTom
angryTomオリジナル
2019-07-26 15:19:2826349ブラウズ

最小の関数依存関係セットを見つける方法

推奨チュートリアル: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。