web-dev-qa-db-ja.com

E-R図で再帰的関係と一緒に三元関係を持つことはできますか

一部のユーザーとコンテストがある単純なシステムのE-Rダイアグラムを設計しています。ユーザーはコンテストを作成するか、受け入れるかどうかを決定できるコンテストに他のユーザーを招待できます。

招待が特定のコンテストにリンクされているため、ユーザーはコンテストと混合して他のユーザーを招待できるため、これを再帰ダイアグラムを使用してE-Rでモデル化できるかどうか疑問に思っています。

それは意味がありますか?または、代替案は何でしょうか?

E-R付きの画像:

enter image description here

2
Tommy95

あなたのモデルはあなたの物語に対応していません。それは言う:

  • usercontestを作成できます
  • userは別のusercontestに招待できます。招待ユーザーは作成者である必要はありません。彼/彼女は彼/彼女自身に招待されることすらありません。

作成者がusersのみを招待できるようにする場合は、invitationcontestと招待されたuserの間のバイナリ関係にする必要があります。ユーザーはコンテストの作成者です。

ここで、作成者と既に招待されたユーザー(または責任のあるユーザーのグループ)が招待を送信できるようにしたい場合は、三者関係を考えることができます。

ただし、 再帰的な関係 は原則として単項です。また、三項関係により、図が読みにくくなっています(特にカーディナリティが追加されている場合)。さらに、彼らはしばしば隠れた実体の症状として自分自身を明らかにします。アソシエーションにInvitationではなくInviteという名前を付けるという事実は、この印象を強めるだけです。

次の代替方法を使用すると、モデルの明瞭さが大幅に向上します。

  • エンティティInvitation
  • 関係invites toInvitationcontestの間
  • sendsUserの間の関係Invitation
  • UserInvitationの間の関係
2
Christophe