2

関係と機能の依存関係が与えられました

ここに画像の説明を入力

そして、それがどのような形であるかを正当化し、それを BCNF に変換しようとしています。

2 番目の FD は、RHS としてキー属性を持つ推移的な依存関係であるため、3NF にあることを提案しました。C は R のスーパーキーではないため、この 2 番目の FD も BCNF に違反しています。

ただし、BCNF に分解する方法がわかりません。

私が分解すると;

ここに画像の説明を入力

これは最初の FD を無効にし、効果的に (A,C) を新しいキーにします - したがって、正しくないようです! この関係は BCNF に変換できますか?

4

1 に答える 1

2

この関係は BCNF に変換できますか?

データベースに関する優れた本に記載されている「分析アルゴリズム」を適用することにより、すべての関係を BCNF に変換できます。

この関係には AB と AC の 2 つのキーがあるため、すべての属性が素数であることに注意してください (このため、関係は自動的に 3NF になります)。

はスーパーキーではないため、この場合のみC → B、 BCNF に違反するすべての依存関係を見つけることから始める必要がありCます。

次に、リレーションを 2 つのリレーションに分解します。1 つは含まCれており、すべての属性がそれによって決定されます (この場合は のみB)。もう 1 つは、他のすべての属性と を含みますC

したがって、分解は実際には次のようになります。

R1(B, C), with key C, with the only (non-trivial) dependency C → B
R2(A, C), with key AC, without (non-trivial) dependencies

次に、BCNF に違反する何らかの依存関係を持つすべての関係に対して分解を繰り返す必要がありますが、この場合、 と の両方が BCNF にあるため、そのような関係はありませR1R2

最後に、分解では依存関係が保持されないことに注意してください。実際、依存関係AB → Cは分解で保持されません。

于 2016-05-21T10:02:24.400 に答える