2016-05-08 7 views
1

私の読んだところ、良いプライマリ・キーを作ること、外部キーは何か、候補キーは何かを理解しています。主キーではなく候補キーを指す外部キーを使用する必要がある場合の例は?

私がいることを、いくつかの異なった書籍やソースに読んだ

:外部キーは、ほとんどの場合、主キー を指す

  • 外部キーが候補キー(または主)を指している必要があり

    ソースの作者は、「外部キーが候補キー(プライマリではない)を指すことができる」の行に沿って何かを常に言います。

    主キーではなく候補キーを選択する理由の例はありますか?

    ありがとう

  • +0

    ルックアップテーブルを参照してください。 *部門名*と*部門番号/コード*の2つの固有の列があり、実際の主キーは名前ですが、その番号を参照します。 – dnoeth

    +0

    ありがとうございます。 なぜ私はあなたに投票を与えることができるように答えとしてそれを追加しないでください。 –

    答えて

    1

    主キー(PK)は、リレーショナル理論では役割を持ちません。 (例:完全性または正規化)PKは、あなたが「プライマリ」と呼ぶことを決めたちょうど候補の鍵(CK)です。外部キー(FK)はCKを参照します。あるテーブルに複数のCKがあり、別のテーブルがPKではないものを参照している場合は、FKを宣言する必要があります。 DBMSは、他の目的のためにPK宣言を使用することができます。

    SQLでは、UNIQUE NOT NULL宣言がスーパーキーを宣言します。 CKは、スーパーキーを含まないスーパーキーです。 SQL PK宣言はUNIQUE NOT NULL制約を宣言しているため、実際にはスーパーキーを宣言します。また、SQL FK宣言では、実際には外部スーパーキーが宣言されます。参照列リストは、PKまたはUNIQUE NOT NULL宣言の列リストを参照します。

    FKまたは外部スーパーキーは、ソーステーブルのサブローが参照テーブルのサブローとして現れる必要があると言います。そうだと宣言してください。

    例:化学元素の表には、合理的に3つのCKがあります(名前、記号、原子番号)。 PKは1つだけです。しかし、列のいずれかが別の表に表示されたときはいつでも、FKを宣言する必要があります。