我的数据库设计技能有点生疏,所以我希望能从你们那里得到一些帮助 =)
我有一个包含所有典型字段(id、name、email等)的“用户”表。用户可以有许多“邀请”。(多对一)每个“邀请”都有一个单一的所有者(用户)。然而,单个“邀请”可以有许多“被邀请人”。
我的困惑是:如果用户可以有许多邀请,并且邀请只能有一个所有者(用户),但是单个邀请可以包含许多被邀请人(这些是用户),应该如何建模?我需要一个新表吗?(“邀请”)
我希望我的问题说得清楚。
我的数据库设计技能有点生疏,所以我希望能从你们那里得到一些帮助 =)
我有一个包含所有典型字段(id、name、email等)的“用户”表。用户可以有许多“邀请”。(多对一)每个“邀请”都有一个单一的所有者(用户)。然而,单个“邀请”可以有许多“被邀请人”。
我的困惑是:如果用户可以有许多邀请,并且邀请只能有一个所有者(用户),但是单个邀请可以包含许多被邀请人(这些是用户),应该如何建模?我需要一个新表吗?(“邀请”)
我希望我的问题说得清楚。
Users
- UserID, PK
- other details about the users
Invitations
- InvitationID, PK
- OwnerID or OwningUserID or just UserID, FK to Users
- other details about the invitations
InvitationUsers
- InvitationID, FK to Invitations
- UserID FK to Users
[PK on (InvitationID, UserID)]
很多人都会被诱惑将邀请的所有用户存储在逗号分隔的列表或XML中。抵制这种诱惑,它只会带来麻烦。
如果只有一种类型的邀请(比如“成为我的Facebook好友,我们可以拥抱之类的”),那么一个更简单的模型可能是:
Users
- UserID, PK
- other details about the users
Invites
- SenderID, FK to Users(UserID)
- RecipientID, FK to Users(UserID)
[PK on (SenderID, RecipientID)]
如果一个所有者可以发送邀请参加各种活动(如约会服务、船展和电影),那么我们需要更多关于这些相关活动的详细信息。