1

機能依存関係でキーを識別する方法を理解できません。たとえば、次のような例を見てきました。

関係ABCDが与えられた場合、そのスーパーキーを含まないすべてのキーを見つけます

A -> BC, C -> D, CD -> AB.

これにより、キー C と A が得られます。私がこの問題にアプローチした方法は、BC と D は両方とも A と C に依存し、AB は CD に依存するというものでした。つまり、これら 3 つすべてがキーですが、CD はスーパーキーであるため (C はキーでもあるサブセット)、CD は最小限のスーパーキーとは見なされません。

ただし、別の例では、

ABCDE
AB → CD
E → A
D → A

ここでの唯一の鍵は明らかに BE です。なぜこれが真実なのか、これらの問題で鍵を見つけるための手順を誰かが明確にすることができますか?

ありがとう。

4

3 に答える 3

6

もう少しフォーマルな手順。

FD を考えてみましょう。たとえば (例 2)、AB -> CD です。

RHS にすべての属性があるまで、簡単な FD を使用してこれを拡張します。

RHS に ABE がないため、単純な FD ABE -> ABE を使用して ABE -> ABCDE を取得する必要があります。

これは、ABE の特定の行の値を知るだけで、その行のすべての属性の値を決定するのに十分であるため、ABE がスーパーキーであることを示しています。

次に、その他の FD を調べて、この場合、LHS (ABE) を減らすことができるものがあるかどうかを確認します。E -> A により、A を ABE から削除して、BE -> ABCDE のみを保持できます。削減のルールは次のとおりです。別の FD (E) の LHS が、削減しようとしているスーパーキー (ABE) の適切なサブセットである場合、その RHS でのみ言及されているすべての属性をスーパーキーから削除できます。他の FD (E -> EA などの「他の」FD を見ている場合、E を削除することはできません!!!)。

この手順は、他の FD の「組み合わせ」も検討する必要があるため、機械的な実装には適していません。ただし、ほとんどのユース ケースやほとんどの捏造されたクラスの演習でさえ、通常、この手順が失敗するほど複雑ではありません (つまり、還元不可能なスーパーキーの代わりに適切なスーパーキーが残る)。

(PS すべてのキーを見つけるには、これをすべての指定された FD に適用する必要があります)

于 2011-10-16T23:38:19.700 に答える
5

2 つ目は少し単純なので、最初に取り上げます。. . B は右側にないため、任意のキーにある必要があります。(つまり、ACDE の値を持っていても、B の値を推測することはできません。) E についても同様です。そのため、すべてのキーに BE を含める必要があります。しかし、E は A (したがって BE → ABE) を与え、AB は CD (したがって BE → ABCDE) を与えるので、BE はそれ自体で十分な鍵です。

最初のものでは、A が鍵であることがわかります。なぜなら、A は B と C を与え、C は D を与えるからです。同様に、C は鍵です。C は D を与え、C と D を合わせて A とB. 逆に、A および/または C は任意のキーにある必要があることがわかります。これは、すべての左側にそれらの少なくとも 1 つが含まれているためです。

于 2011-10-16T03:18:29.677 に答える