1. ホーム
  2. sql

[解決済み] DeterminantsとCandidate Keysは同じものなのか、それとも違うものなのか?

2022-02-25 02:16:25

質問

これ こんなのがありました。

定義 データベース・テーブルにおける決定子とは、他のテーブルに割り当てられた値を決定するために使用できる任意の属性のことです。 属性は、同じ行に存在します。

employee_id、first_name、last_name、date_of_birthの属性を持つテーブルを考えてみましょう。この場合、フィールド employee_id は残りの3つのフィールドを決定します。名前フィールドは というのも、その会社には複数の従業員がいる可能性があるからです。 同じ名字の従業員がいる。同様に、DOB フィールドは、employee_idやnameフィールドを決定しないためです。 複数の従業員が同じ誕生日を持つ可能性があります。

この定義は、候補キーにも適用できるのでは?

どのように解決するのですか?

私の理解では、テーブルが完全に正規化されていない場合、決定基は候補キーにならないかもしれません。実際、正規化されていないデータをより有用な正規化された形にするプロセスを説明するときに、行列式という単語が使われます。

この(明らかに非正規の)表を考えてみましょう。

CREATE TABLE US_Address (
  AddressID int,
  Streetline varchar(80),
  City varchar(80),
  State char(2),
  ZIP char(5),
  StateName varchar(80),
  StateTax DECIMAL(5,2)
)

StateはStateNameとStateTaxの決定要素ですが、行の候補キーではありません。 したがって、適切な正規化により、StateName と StateTax は US_Address テーブルから State テーブルに移動します。

参照 ここで をご覧ください。