関数の依存関係は、「X に 1 つの値を指定すると、Y の値は 1 つしかわからないのでしょうか?」という質問に答えます。X または Y は、単一の属性ではなく、属性のセットである場合があります。この回答を読むときは、このことを覚えておいてください。
各会社には、異なる (一意の) 住所の意味 (Street_Address、City、Zip、State) があり、一緒になってキーを形成します。
定義上、そのキーは次のことを意味します。
- Street_Address、City、Zip、State -> CEO_Name
- Street_Address、City、Zip、State -> Company_Name
これが、候補キー {Street_Address, City, Zip, State} のすべての可能な FD です。4 つのうちの 2 つ - 途中で家に帰ります。
{CEO_Name, Company_name} を機能依存関係の左側として特定しました。この特定のケースでは、それを候補キーとしても識別します。作成したデータを見てみましょう。
Company_Name CEO_Name Street_Address City State Zip
--
Wibble, Inc. Mary Smith 123 E Main St Anytown PA 00001
Wibble, Inc. Mary Smith 456 S Darn St Sometown WY 10000
そのデータは、たまたま同じ名前を持つ 2 つの異なる企業、2 人の異なる CEO がたまたま同じ名前を持つことを示しています。これは FD の説明に適合しますが、{Company_Name, CEO_Name} が候補キーではないことを明確に示しています。偽造されたデータは、{Company_Name, CEO_Name} が機能依存関係の左側になることはできないことも明確に示しています。{Company_Name, CEO_Name} に 1 つの値を指定すると、他の属性の値は 1 つだけではありません。
左側の可能性として属性 Company_Name と CEO_Name を除外したので、さらに 2 つの機能依存関係を「製造」する唯一の方法は、候補キー {Street_Address, City, Zip, State}内でそれらを見つけることです。候補キーに何か特別なものがあるからではなく、それらの属性だけが残っているからです。
私の推測では、あなたの先生はあなたがこう言うことを期待しています。
米国 (「現実」の世界) では、「Zip -> City, State」は成立しません。郵便番号は、運送業者がルートを進めて郵便物を配達する方法に関係しています。郵便番号は地理に関係ありません。いくつかの都市 (および郵便番号) は州境にまたがっています。かなり多くの郵便番号が、1 つの州内の隣接する都市にまたがっています。USPS が予算を削減するにつれて、そのような郵便番号の数が増えると予想しています。
しかし、学界では、この現実世界での行動は、教育上の理由から無視されることがよくあります。そのため、先生は {Zip -> City, State} を期待しているに違いありません。