以下の関係と機能の依存関係があります。
R = ABCDE
F: C->AB, D->A, BE->CE, E->B
この関係がBCNFにあるかどうかを確認する必要があります。
ウィキペディアはこう述べています:
...すべての依存関係X→Yの場合に限り、次の条件の少なくとも1つが成立します。[4] X→Yは自明な機能依存関係(Y⊆X)XはスキーマRのスーパーキー
それで、私は最初にスーパーキーを見つけました。
Dは右側にないため、スーパーキーにDが含まれている必要があります。
私が思ったのは、唯一のスーパーキーはDEだということです。これは正しいです?
そして、唯一のスーパーキーがDEである場合、機能依存関係のいずれにも左側にスーパーキーがないため、BCNFでは関係is notになります。
私が間違っていると誰かが指摘できますか?
「アームストロングの公理は、リレーショナルデータベースのすべての機能的な依存関係を推論するために使用される公理(またはより正確には、推論規則)のセットです」( link )。
BE-> CEは、BE-> CとBE-> Eに分割できます。些細な機能依存関係BE-> Eはスキップできます。 BE-> CとE-> BからE-> Cを推定できるため、BE-> CはE-> Cに置き換えることができます。したがって、機能の依存関係のセットは次のように削減できます。
AとBは、機能的な依存関係の左側のサイトに見つからないため、キーのメンバーにすることはできません。したがって、リレーショナルシステムのすべてのキーを検索するだけで十分です(Rから属性A Bを削除し、AとBを含むすべての機能依存関係を削除します)。
Cは機能依存関係の左側にないので、システムを次のように削減できます。
したがって、機能IDのリストFは空です。このリレーショナルシステムの唯一のキーはDEであり、これは還元されていないシステムの唯一のキーでもあります。だからあなたの最初の質問のあなたの答えは真実です。
このページ を使用して候補キーを見つけることができます
システムがBCNFにあるかどうかを確認するために、すべての候補キーを見つける必要はありません。キーではない左側を持つ1つの機能依存関係を見つけるだけで十分です。
C-> ABはそのような機能的な依存関係です。Cの閉包がCであるため、Cはキーではありません。これは、Cに機能的な依存関係を適用することによって、それ以上の属性を生成できないことを意味します。
このページ を使用して、関係が通常の形式であるかどうかを確認できます。