我们是否应该将单向的一对多关系分解为JoinTable

时间:2019-03-08 11:30:18

标签: sql database hibernate database-design database-diagram

我目前正在处理有2个表的应用程序。用户和团队。用户具有UserId作为PK和UserPassword。

团队表的TeamId为PK和TeamName。

最初,我只有一个表,其中有UserId,UserPassword和TeamId,但有人指出,当前的设计未标准化。因此,我不得不将该表分为“用户”,“团队”和一个名为“ User_Team”的联接表,该表包含UserId作为User表中的PK和TeamId作为Team表中的PK。

约束 一个用户只能属于1个团队,而1个团队可以拥有多个用户。

据我了解,从团队到用户端都是一对多。

我已经将UserId和TeamId组合在一起作为组合键,并且还使其在JoinTable(User_Team)中是唯一的,因此1个用户不能在多个团队中。

我的查询是有必要将表单独分成团队表。不能,我在一个表中只有全部3个字段。有人可以向我解释一下如何将其标准化。还请告诉我在这种情况下是否需要JoinTable。

1 个答案:

答案 0 :(得分:2)

否,对于OneToMany关系,您不需要JoinTable。只需在用户表上有一个teamId字段,您就可以开始使用了。

根据经验:

  • OneToOne :只有一张桌子
  • OneToMany :两个表,“许多”侧(对于您的情况为User)具有外键
  • ManyToMany :拥有一个JoinTable