2017-03-20 12 views
0

単純なテーブルデザインでは、別のテーブルにperson(個人がPKとしてperson_idを持つ基本テーブル)を保持する方が望ましい場合は、person_idをアドレステーブルまたはストアに格納する方が良いでしょう人テーブル内のaddress_id?アドレステーブルは、企業などの他のエンティティのアドレスを格納するために使用されるため、別々のPKを必要とします。同一の属性を持つアドレスを、個人または企業のどちらであるかにかかわらず、1つのテーブルに格納することは、分析にも使用しましょう。テーブルデザインの可能性

答えて

1

すべてのpersonaddressが必要ですが、(それはbusinessに属している可能性があるため)addressは必ずしもpersonaddress_id一部を作り、personに属していない場合。次に、外部キーフィールドにNULL値は必要ありません。

0

以下が必要な場合は意思決定のための主な基準は次のとおりです。

  • 複数の人が同じアドレス(人・テーブルでADDRESS_ID)を共有することができるはずです。

  • 1人は複数のアドレス(アドレステーブルのperson_id)を持つことができます。

両方ともtrueの場合、person_idとaddress_idを含む追加のテーブルが必要になります。両方が禁止されている場合は、外部キー列に一意制約を追加できます。

+0

W. Mannの答えを読んだ後、私は、「アドレステーブルの外部キー」の場合、複数の外部キーが必要であることに気づきました。1つは人物、1つはビジネスなどです。 – mm759