gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:38 33 4
gpt4 key购买 nike

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

Team 表将 TeamId 作为 PK 和 TeamName。

最初我只有一个表,其中有 UserId、UserPassword 和 TeamId,但有人向我指出当前设计未规范化。因此,我不得不将该表分解为用户、团队以及一个名为 User_Team 的连接表,其中包含用户表中作为 PK 的 UserId 和团队表中作为 PK 的 TeamId。

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

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

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

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

最佳答案

不,对于 OneToMany 关系,您不需要 JoinTable。只需在您的 User 表中添加一个 teamId 字段即可。

根据经验:

  • OneToOne:有一个表
  • OneToMany:两个表,“多”方(User 为您的情况)有一个外键
  • ManyToMany:有一个 JoinTable

关于sql - 我们是否应该将单向的一对多关系分解为 JoinTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55062351/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com