珍しいデータベース設計の問題があります。適切に処理する方法がわかりません。profile
Webサイトユーザーの公開プロファイル情報を格納するというテーブルがあります。ただし、すべてのプロファイルは1人またはカップルのいずれかに属する可能性があるため、person
個人固有のデータを格納するために呼び出される追加の子テーブルが必要です。すべてのprofile
エンティティには、少なくとも1つ、ただし2つ以下のperson
子エンティティが必要です。
そのような関係をモデル化するための最良の(「コーシャ」および/またはパフォーマンスの観点から)方法は何ですか?通常の1対多で、プログラムで、またはストアドプロシージャを使用して、子の数を強制する必要がありますか?または、親テーブルに2つの外部キーフィールドを作成しnull
、そのうちの1つを許可する必要がありますか?多分私が考えることができない別の方法がありますか?
編集:ゴードンの質問に答える追加情報
- 人は1つのプロファイルにのみ関連付けることができ、プロファイルのない人は存在できません。おそらく名前
person
は紛らわしいです。それは、人がプロフィールを持っていることを示唆しているかもしれませんが、実際には、人の情報を持っているのはプロフィールです。 - カップルのプロフィールの場合、両方の人は平等です。サイト固有の理由により、2の制限は変更されませんが、人を追加または削除することは可能です(1人のプロファイルをカップルのプロファイルにする、またはその逆)。ただし、1未満または1を超えることはできません。 2名様。
- 個人データはプロファイルデータなしでは取得されませんが、プロファイルデータは個人データなしで取得される場合があります。