すべてCustomer
には、物理アドレスとオプションの郵送先住所があります。これをモデル化するための好みの方法は何ですか?お客様をモデル化する最善の方法<-->住所
オプション1 Customer
はオプション2 Customer
は、アドレスタイプ
Customer (id) Address (id, customer_id, address_type, street, city, etc.)を記述するためのフィールド が含まれてい
Address
に1対多の関係を持ってい
Address
Customer (id, phys_address_id, mail_address_id) Address (id, street, city, etc.)
への外部キーを持っています
オプション3アドレス情報は非正規化され、Customer
Customer (id, phys_street, phys_city, etc. mail_street, mail_city, etc.)
私の最も重要な目標の1つは、オブジェクト・リレーショナル・マッピングを単純化することです。そのため、私は最初のアプローチに傾いています。あなたの考えは?
なぜあなたはcust_address_typeとアドレスを全く分けますか?両方に含まれる情報は問題なく1つのテーブルに置くことができます。私は2つのテーブルが3つのテーブルに役立つことはありません。 – JM4
これは、顧客あたり1つ以上の住所を持つことができるためです。請求書、配送なども可能です。また、日付フィールドを使用してeasly履歴を追跡することもできます。同じ住所に複数の顧客を置いて、それぞれをエンティティとして扱うことができますが、住所を変更することで他人に影響を与える必要はありません。 – Karl
また、このモデルは、ほとんどのアドレスのリストがあり、それらを割り当てる状況(たとえば、郵便局などからアドレスリストを購入した場合)に適しています。または、あなたのデータベースが大部分で、あなたの地域でほとんどのアドレスを持つことができる場所。 – Karl