一部のユーザーとコンテストがある単純なシステムのE-Rダイアグラムを設計しています。ユーザーはコンテストを作成するか、受け入れるかどうかを決定できるコンテストに他のユーザーを招待できます。
招待が特定のコンテストにリンクされているため、ユーザーはコンテストと混合して他のユーザーを招待できるため、これを再帰ダイアグラムを使用してE-Rでモデル化できるかどうか疑問に思っています。
それは意味がありますか?または、代替案は何でしょうか?
E-R付きの画像:
あなたのモデルはあなたの物語に対応していません。それは言う:
user
はcontest
を作成できますuser
は別のuser
をcontest
に招待できます。招待ユーザーは作成者である必要はありません。彼/彼女は彼/彼女自身に招待されることすらありません。作成者がusers
のみを招待できるようにする場合は、invitation
をcontest
と招待されたuser
の間のバイナリ関係にする必要があります。ユーザーはコンテストの作成者です。
ここで、作成者と既に招待されたユーザー(または責任のあるユーザーのグループ)が招待を送信できるようにしたい場合は、三者関係を考えることができます。
ただし、 再帰的な関係 は原則として単項です。また、三項関係により、図が読みにくくなっています(特にカーディナリティが追加されている場合)。さらに、彼らはしばしば隠れた実体の症状として自分自身を明らかにします。アソシエーションにInvitation
ではなくInvite
という名前を付けるという事実は、この印象を強めるだけです。
次の代替方法を使用すると、モデルの明瞭さが大幅に向上します。
Invitation
invites to
Invitation
とcontest
の間sends
とUser
の間の関係Invitation
User
とInvitation
の間の関係