データベースの連絡先情報を再構築する方法についてブレインストーミングを行っています。ご存知のように、電話番号は個人 (携帯電話)、家族 (自宅の電話)、組織/企業などに関連付けることができます。論理的には、電話番号は電話番号であり、電話番号です。携帯電話の番号と自宅の電話番号に違いはありません。また、1 人が複数の携帯電話を持つことができ、家族が複数の電話回線を持つことができ、組織が多数の電話回線を持つことができます。
通常、テーブルを設計するときは、単一の電話番号テーブルが必要であることを意味します。そしてそれは、個人や家族、組織に一対一でつながるべきです。問題は、その記録が個人の記録であろうと、家族の記録であろうと、組織の記録であろうと、電話記録が単一の親記録によってのみ所有されることを誰かがどのように強制するのでしょうか?
私の意見では、私が考え出した唯一の2つの方法はクラッジです。エレガントなソリューションが必要です。
1 つ目は、PersonPhones、FamilyPhones、OrganizationPhones の 3 つのテーブルを作成することです。次に、本質的に同じデータを格納することを使命とする 3 つのテーブルを取得します。
2 つ目は、奇妙な構造の単一の電話テーブルを作成することです。電話番号、個人 ID 用の null 許容フィールド、家族 ID 用の別のフィールド、および組織 ID 用の 3 番目のフィールドがあります。次に、これら 3 つのうち 2 つが NULL であることを強制する制約を追加します。
何か案は?