2

2 つのテーブル間の関係を作成しています。

私が形成したい関係は、Inventory テーブルと InventoryExtended テーブルの間です。

Inventory テーブルの主キーは InvID (Inventory ID) です。

InventoryExtended を作成した理由は、Inventory テーブル内の在庫アイテムの 1% のみが追加フィールドまたは拡張フィールドを必要とし、残りは必要ないためです。必要な 50 個の追加フィールドに対して 99% が空白になる Inventory テーブルにこれらの追加フィールドを追加する代わりに、InventoryExtended テーブルを作成してそこに 50 個のフィールドを格納することにしました。

Inventory と InventoryExtended テーブルの関係は 1 対 1 になります。

つまり、Inventory テーブルの 1% のレコードでは、InvId は InventoryExtended テーブルの InvId と同じになります。

私の質問は、InventoryExtended テーブルの InvID を FK (Foreign Key) にするか、PK と FK にするかです。

InvID は InventoryExtended テーブルで一意になるため、PK と FK である必要があると考えています。

前もって感謝します。

4

2 に答える 2

2

あなたは正しいです。

テーブル内で一意になるため、はaとaである必要InvID があります。PRIMARY KEYFOREIGN KEYInventoryExtended

このタイプの関係は、実際には1:1または(より正確には)です。これは、テーブル1::0..1内の一部の行のみがに関連する行を持つためです。InventoryInventoryExtended

また、プロパティがある場合でも、プロパティを持つInventoryExtended (InvID)べきではないことに注意してください。IDENTITYInventory (InvID)

于 2013-01-24T16:09:44.793 に答える
0

InvID は、拡張テーブルの PK と FK の両方になります。

特定のインベントリ タイプに拡張データがあるかどうかが事前にわかっている場合 (つまり、データをフェッチしようとするとき)、そのようなレコードについては、元のテーブルを完全にスキップして、単純に 2 つの素のテーブル smallInventory と bigInventory を使用することもできます。一方のレコードは他方に存在します。

于 2013-01-24T16:55:06.743 に答える