2012-05-11 26 views
2

主キー列の1つのみを参照しているSQLで2列の主キーを持つ別の表に外部キーを設定できますか?2つの列を含む主キーを持つ表への外部キー参照

+3

2列の主キーを意味しますか?テーブルに2つの主キーを持つことはできません... –

+0

はい、それは私が意味したものです – Spektor

+0

外部キーは複数の列として定義できます。ただし、複合外部キーは、同じ数の列と同じデータ型を持つ複合主キーまたは一意キーを参照する必要があります。コンポジット・プライマリ・キーとユニーク・キーは32列に制限されているため、複合外部キーも32列に制限されています。 (9iでは、より大きなバージョンでは異なるとは思われません)http://docs.oracle.com/cd/B10500_01/server.920/a96524/c22integ.htm) –

答えて

1

外部キーは、主キー全体または他の一意制約を参照する必要があります。親テーブルがレコードを一意に識別するために2つの列を必要とする場合、その扶養家族はその構造内に両方の列を含める必要があります。

シーケンスで一般的に生成された代用または合成の主キーを使用することで、化合物の外部キーの拡散を避けることは非常に一般的です。外部キーは、単一列の代理キーを参照します。

複合ビジネスキーは、依然として一意の制約を持つ親テーブルに適用する必要があります。

複合主キーにも一意の列が含まれていることがあります。例えば、これは円弧(スーパータイプとサブタイプリレーション)を実施する方法です。 PERSONS表が(PERSON_ID)を主キーとして持ち、(PERSON_ID、PERSON_TYPE)が一意キーとなるようにします。このようなシナリオでは、従属表は特定の関係に応じて(PERSON_ID)または(PERSON_ID、PERSON_TYPE)のいずれかを参照することがあります。

1

PK-FKリレーションシップのルールでは、列の数は等しくなければならず、データ型も同じでなければならないという。

+1

検索エンジンについてのことは、剽窃した回答の元のソースを見つけるのが非常に簡単であることです。technet.microsoft.com/en-us/library/cc917573.aspx卸売りの引用によって担当者を獲得しようとしないでください。 SOの精神。 – APC

関連する問題