4

私は現在、機能の依存関係について学んでおり、その背後にある概念を理解するのに苦労しています。

私はテーブルを持っているとしましょう:

お客様

|-----------|--------------|------------|------------------|------------------|
|Cust-ID    | Cust-FName   |Cust-LName  |Cust-Email        |Cust-Pw           |
|-----------|--------------|------------|------------------|------------------|
|1          |John          |Smith       |jsmith@email.com  |srt6564sdgjhy55y  |
|2          |Adam          |Borneo      |adb@hotmail.com   |45657ythjdfgqAfd  |
-------------------------------------------------------------------------------

cust-ID と cust-Email の 2 つの候補キーがあります (1 人の顧客に属することができる電子メール アドレスは 1 つだけです)。cust-ID を PK として選択すると、機能的な依存関係は次のようになります。

{Cust-ID} -> {Cust-FName, Cust-LName, Cust-Email, Cust-Pw}?

または、両方の候補キーを描画/表現しますか?

{Cust-ID} -> {Cust-FName, Cust-LName, Cust-Email, Cust-Pw}

{Cust-Email} -> {Cust-ID, Cust-FName, Cust-LName, Cust-Pw}?

本能的には前者だと思いますが、これはまったく新しいトピックなので、助けていただければ幸いです。

4

2 に答える 2

2

関数従属性セットは、常に[候補]キーのスーパーセットです。言い換えると、キーは、関係全体をカバーする属性リストを持つ機能従属性です。したがって、リストした両方の候補キーも機能依存性です。

于 2012-12-14T22:37:00.463 に答える
2

両方

{Cust-ID} -> {Cust-FName, Cust-LName, Cust-Email, Cust-Pw}

{Cust-Email} -> {Cust-ID, Cust-FName, Cust-LName, Cust-Pw}

あなたの場合、機能的な依存関係です。

関数の依存関係は次のような状況です。矢印の左側の列の値が同じ 2 つの行がある場合は、矢印の右側の列の値が等しくなければなりません。同じ Cust-ID を持つ 2 つの行がある場合、名前、電子メール、およびパスワードの列は同じである必要があります。同じ Cust-Email を持つ 2 つの行がある場合、(この例では) 名前、電子メール、およびパスワードの列は同じである必要があります。

テーブルが第 3 正規形でない場合は、左側のキーの適切なサブセットに関数依存性がある可能性があります。実際には、候補キーと正規形 (2NF、3NF、BCNF) を機能依存関係で定義します。

機能の依存関係の詳細については、当社のブログ を参照してください。これは、データの正規化に関する一連の投稿の最初の部分です。

于 2014-03-07T11:48:42.030 に答える