0

次の属性 (フィールド) を持つ 2 つのテーブルがあります。

コンタクト

  • ID連絡先
  • 苗字
  • ファーストネーム
  • 父の名前
  • IDジェンダー
  • 挨拶
  • 生年月日
  • ...

法的実体

  • IDLegalEntity
  • 名前
  • 正式名称
  • IDLegalForm
  • ...

私のデータベースでは、 Customersに関する情報を保存したいと考えています。

お客様

  • ID顧客
  • 納税者番号
  • ID税当局
  • ...

顧客は、個人 ( Contact ) または会社 ( Legal Entity ) のいずれかです。他のテーブルで一意の CustomerID (主キー) を使用するには、テーブルCustomerをテーブルContactおよびテーブルLegal Entityとどのように関連付ける必要がありますか?

4

3 に答える 3

0

Customer テーブルに CustomerType (個人/法人) 列を作成し、LegalEntity テーブルと Contact (子) テーブルに外部キー CustomerId を作成して、Customer (親) テーブルの CustomerId 列を参照します。

于 2013-07-01T06:34:25.057 に答える
0

私は物事をかなり変えます。まず、そこにある間抜けな ID 命名スキームを取り除きます。ID ですべてを開始するのは奇妙に見えます。通常、ID で終了します。ほとんどの ORM は、ID で終了する規則を探します。

第二に、会社の連絡先でない限り、あなたの物理的な人物を「連絡先」とは呼びません。それ以外の場合は、Person と呼びます。

第 3 に、両方を使用するかどうかは、どのように使用するかによって異なります。すべての顧客、人、法人を同じように扱いたいですか? その場合は、UniqueID を持つ Customers テーブルが必要です。この同じ ID を Person/Contact テーブルと LegalEntity の主キーとして使用します。これにより、顧客から顧客タイプへの 1 対 1 のマッピングが作成され、共通の ID システムが共有されます。

于 2012-04-06T02:05:13.677 に答える