sql - 我们是否应该将单向的一对多关系分解为 JoinTable
问题描述
我目前正在开发一个有 2 个表的应用程序。用户和团队。用户有 UserId 作为 PK 和 UserPassword。
Team 表有 TeamId 作为 PK 和 TeamName。
最初我只有一个表,其中有 UserId、UserPassword 和 TeamId,但有人向我指出当前的设计没有标准化。因此,我不得不将表分解为 User、Team 以及一个名为 User_Team 的 Join Table,其中包含 User 表中的 UserId 作为 PK 和 TeamId 作为 Team 表中的 PK。
约束 一个用户只能在 1 个团队中,而 1 个团队可以有多个用户。
因此,据我了解,这是从团队到用户端的 OneToMany。
我已将 UserId 和 TeamId 一起作为复合键,并使其在 JoinTable(User_Team) 中唯一,因此 1 个用户不能在多个团队中。
我的疑问是是否有必要将表单独分解为 Team 表。我不能只在一个表中包含所有 3 个字段。有人可以解释一下它是如何不规范化的。也让我知道在这种情况下是否需要 JoinTable。
解决方案
不,OneToMany 关系不需要 JoinTable。只需teamId
在您的用户表上有一个字段,您就可以开始了。
根据经验:
- OneToOne : 有一张桌子
- OneToMany:两个表,“多”侧(
User
对于您的情况)有一个外键 - ManyToMany : 有一个 JoinTable
推荐阅读
- android - 自定义视图 onTouch 没有响应
- arrays - 根据内部数组条件查找数组中的项
- r - 使用分类变量在 R 中执行 T 检验
- excel - 我想按特定字符之前的名称对 excel 中的列进行排序
- java - 在 Java Web 应用程序中将 avro 文件转换为 csv
- c# - 如何在 wpf 中使用棱镜打开新的模态对话框
- r - 如果时间过长,如何使用 withTimeout 函数中断表达式
- java - 已经为此响应调用了 Spring MVC getWriter() - 在来自 Angular 应用程序的 GET 请求中。
- android - 处理片段中的 Payumoney 响应
- reactjs - React Native 全局后台处理