このデータベースは顧客データベースを追跡するために設計されていますが、少し複雑な設計だと思います。もっと簡単にできると思います。誰か設計についてアドバイスをいただけますか?


このデータベースは顧客データベースを追跡するために設計されていますが、少し複雑な設計だと思います。もっと簡単にできると思います。誰か設計についてアドバイスをいただけますか?


もう1つの部分的な解決策は、連絡先のテーブルを使用することです。顧客には連絡先があります(1対多)。各連絡先には複数の電話番号が含まれている場合がありますが(その場合でも、必要な携帯電話番号は1つ、自宅番号は1つ、職場番号は1つ、FAX番号は1つだけです)、電子メールアドレスは1つだけです。
ここで単純さが重要なポイントである場合は、次のように、顧客関連の住所タイプ情報を 1 つのテーブルに折りたたむことをお勧めします。
customer_contact_details{
customer_id MEDIUM_INT
contact_type VARCHAR2(10)
contact_details VARCHAR2(100)
status BOOLEAN
}
contact_type フィールドは、必要にHome Phone,email,primary_email,work_phone,primary contact応じてタグ付けできます。その後、関連するすべての連絡先情報を 1 つのテーブルにまとめることができます。スキーマを合理化し、情報を理解するために必要な結合は 1 つだけです。
この図に関するいくつかの考え:
phone直接参照する場合、1 つの数値を更新するのは簡単な操作ですが、同じことを行うためだけにCustomer新しい数値を挿入し、結合テーブルに複数の操作を行うのは (私にとっては) 奇妙です。phoneEmail。defaultビットまたはordinalコラムを提供する必要がありますか?