我正在尝试设计一个让运动队更容易组织比赛的网站:
用户注册并加入团队。会员可以浏览可用的团队并向他们发送私人消息以组织比赛。比赛结束后,团队可以在彼此的页面上发表评论,提及他们的技能,体育精神等。以下是我想象的数据库:
用户
* UserID
* Username
* email
团队
* TeamID
* TeamName
* OtherInfo
查看
* FromID
* ToID
* Date
* Comments
消息
* FromID
* ToID
* Content
UserTeam (联结表)
* pk (UserID, TeamID)
我不太确定如何对评论和消息进行建模。评论有一个from和to to field,所以我不能像在多对多情况下那样通过使用联结表来规范化设计。
注意:消息可由会员和团队发送,并可由会员或团队接收。
答案 0 :(得分:1)
不确定问题是什么,但如果您的消息(和评论?)可以由团队或成员发送和接收,则需要区分消息目的。添加tinyint
或其他一些列,指示个人/团队是否向某个人/团队发送消息(以便您的查询知道使用相关的FromID
和ToID
表)。
团队规模怎么样?你的意思是:“会员可以浏览可用的团队并发送私信来组织比赛。”?所有团队的规模是否相同,人们可以自由地从一个团队跳到另一个团队?如果是这样,您需要跟踪团队成员以及是否需要其他成员。您可以在Team
表或UserTeam
联结表中执行此操作。
我也猜测你的网站需要登录功能。区分基本团队成员和团队的官方代表可能是个好主意。因此,只有官方成员(或其他任何成员)能够在团队之间发送(和接收!)消息。 (如果你的意思是实现一个简单的留言板类型的解决方案,这一点可能毫无用处。)
编辑。标准化的选项。
我在您当前的架构中没有看到任何错误,但您可以将Review和Message表组合在一起:
<强>通信强>
审核/消息列还可以区分人员和团队之间的消息,因此FromID也可以是FK到TeamID。