このデータベースは顧客データベースを追跡するために設計されていますが、少し複雑な設計だと思います。もっと簡単にできると思います。誰か設計についてアドバイスをいただけますか?
user474901
質問する
3458 次
3 に答える
0
もう1つの部分的な解決策は、連絡先のテーブルを使用することです。顧客には連絡先があります(1対多)。各連絡先には複数の電話番号が含まれている場合がありますが(その場合でも、必要な携帯電話番号は1つ、自宅番号は1つ、職場番号は1つ、FAX番号は1つだけです)、電子メールアドレスは1つだけです。
于 2012-10-04T09:29:51.347 に答える
0
ここで単純さが重要なポイントである場合は、次のように、顧客関連の住所タイプ情報を 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 つだけです。
于 2012-10-04T09:02:26.260 に答える
0
この図に関するいくつかの考え:
- 多対多の結合テーブルに主キーを設定します (おそらく、両方の列が PK である必要があります)。
- 表内の「重複した」電話番号は、正規化のルールに違反しているとは思いません。むしろ、偶然だと思います。たとえば、2 人の人物の名前が「Joe」であるという理由だけで、名のテーブル全体が存在するわけではありません。また、2 人が同じ電話番号を共有している場合、そのうちの 1 人が別の番号を取得するとします。
phone
直接参照する場合、1 つの数値を更新するのは簡単な操作ですが、同じことを行うためだけにCustomer
新しい数値を挿入し、結合テーブルに複数の操作を行うのは (私にとっては) 奇妙です。phone
- と同じ取引
Email
。 - 複数の選択肢がある場合、アプリはどの電話またはメールを使用するかをどのように選択しますか?
default
ビットまたはordinal
コラムを提供する必要がありますか? - 顧客は多くの場所、多くの会社、またはその両方を持っていますか?
于 2012-10-03T15:34:47.673 に答える