1

R属性を持つテーブルがあるとしましょうA, B, C, ここでAは主キーです。多値の依存関係 B->-> C があるとします。テーブルRを 2 つの新しいテーブルR1に分解し、属性とキーR2を持ち、属性を持ちます。の主キーは何ですか?R1ABAR2BCR2

答えはこうあるべきだと思います: 4NF ではすべての MVD の左側がスーパーキーである必要があるため、新しいテーブルではキーは B になりますが、属性のセット全体がスーパーキーになることもあります (些細なことではありますが、そうではありません)。 4NF分解では問題ないと思います)。だから、それは私の推測です。

Catcall の優れたアドバイスに基づいて、結果の R2 テーブルには、B の多値依存性のために、B の値が重複する多くの行が含まれます。キーの代替オプションは、C 自体と B と C の組み合わせです。C->B が成り立つ場合、C は主キーになる可能性がありますが、この場合はそうではありません。したがって、この状況での唯一の鍵は B,c です。誰かが私の推論が正しいかどうかを確認できますか?

4

1 に答える 1

2

私が正しく理解していれば、あなたは持っています:

A -> B

B -> -> C

これは、A のすべての値に対して B の値が 1 つだけ存在し、B のすべての値に対して C の値が多数存在することを意味します。

分解後、(A, B) は R1 のスーパーキーになり、(B, C) は R2 のスーパーキーになります。

したがって、これまでの推論は正しいです。しかし、現実の世界でそこで終わることはできないと思います。データベースを設計している場合は、次の質問もする必要があります。

  1. 以下は本当ですか?C -> B その場合、C が主キーになり、(B, C) がスーパーキーになります。
  2. 以下は本当ですか?C ->-> B その場合、基本的に他の 2 つのエンティティ間に多対多結合があります。
于 2012-09-05T10:33:54.360 に答える