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

Should we break One to Many Relation which is unidirectional into a JoinTable

我目前正在开发一个有 2 个 Table 的应用程序。用户和团队。用户将 UserId 作为 PK 和 UserPassword。

团队 table 将 TeamId 作为 PK 和 TeamName。

最初我只有一个 table,其中有 UserId、UserPassword 和 TeamId,但有人向我指出当前的设计未规范化。因此,我不得不将 table 分解为用户、团队以及名为 User_Team 的加入 Table,其中包含作为来自用户 table 的 PK 的 UserId 和作为来自团队 [=] 的 PK 的 TeamId 28=].

约束条件 一个用户只能在 1 个团队中,1 个团队可以有多个用户。

所以根据我的理解,这是一个从团队到用户端的OneToMany。

我将 UserId 和 TeamId 一起作为复合键,并在 JoinTable(User_Team) 中使其唯一,这样 1 个用户就不能在多个团队中。

我的问题是,是否有必要将 table 单独拆分为团队 table。我不能将所有 3 个字段都放在一个 table 中吗?有人能解释一下它是如何不规范化的吗?另外让我知道在这种情况下是否需要 JoinTable。

不,OneToMany 关系不需要 JoinTable。只需在您的用户 table 上添加一个 teamId 字段,您就可以开始了。

根据经验:

  • OneToOne: 有一个table
  • OneToMany:两个 table,"many" 一侧(User 为您的情况)有一个外键
  • ManyToMany:有一个 JoinTable