Database 在设计数据库时需要指导吗

Database 在设计数据库时需要指导吗,database,database-design,Database,Database Design,我正试图设计一个wesite,使运动队能够更轻松地组织比赛: 用户注册并加入团队。成员可以浏览可用的团队并向他们发送私人消息以组织比赛。比赛结束后,球队可以在彼此的页面上发表评论,提及他们的技能、体育精神等。以下是我想象的数据库的样子: 用户 * UserID * Username * email 团队 * TeamID * TeamName * OtherInfo 回顾 * FromID * ToID * Date * Comments 消息 * FromID * ToID * Cont

我正试图设计一个wesite,使运动队能够更轻松地组织比赛:

用户注册并加入团队。成员可以浏览可用的团队并向他们发送私人消息以组织比赛。比赛结束后,球队可以在彼此的页面上发表评论,提及他们的技能、体育精神等。以下是我想象的数据库的样子:

用户

* UserID
* Username
* email
团队

* TeamID
* TeamName
* OtherInfo
回顾

* FromID
* ToID
* Date
* Comments
消息

* FromID
* ToID
* Content
用户团队(连接表)

我不太确定如何对评论和信息进行建模。评论有一个from和to字段,所以我不能像在多对多情况下那样,通过使用连接表来规范化设计


注意:消息可以由成员和团队发送,也可以由成员或团队接收。

不确定问题是什么,但如果您的消息(和评论?)可以由团队或成员发送和接收,您需要区分消息的用途。添加一个
tinyint
或其他列,指示消息是否由个人/团队指向个人/团队(这样您的查询就知道使用相关表的
FromID
ToID

团队规模如何?您所说的“成员可以浏览可用团队并向他们发送私人消息以组织比赛”是什么意思?所有团队的规模是否相同,人们能否自由地从一个团队跳到另一个团队?如果是这样,您需要跟踪团队成员以及是否需要其他成员。您可以在
Team
表或
UserTeam
连接表中执行此操作

我也猜你的网站需要登录功能。区分基本团队成员和团队官方代表可能是个好主意。因此,只有官方成员(或其他任何人)才能在团队之间发送(和接收!)消息。(如果您想要实现一个简单的留言簿类型的解决方案,那么这一点可能是无用的。)


编辑。一个用于规范化的选项

我看不出您当前的模式有任何错误,但您可以将Review表和Message表结合起来,如下所示:

沟通

  • MsgID(主键)
  • FromID(FK到用户,不为空)
  • 应答(FK到MsgID,空)
  • 时间戳
  • 查看/消息(tinyint[通信类型],非空)
  • 文本(非空)

Review/Message列还可以区分个人和团队之间的消息,因此FromID也可以是FK到TeamID。

您不需要以某种方式将用户链接到团队吗?UserTeam(连接表)不需要自己的PK。
(UserID,TeamID)
将是该表的主键。@a_horse_,带有_no_名称,是的,这是我的意图。“为了清晰起见,我将对其进行编辑。”亨利森更新了我的答案。如果答案有用或无用,请随意评论。
* pk (UserID, TeamID)