【问题标题】:Joining another table with existing junction table将另一个表与现有的联结表连接起来
【发布时间】:2023-04-01 14:40:02
【问题描述】:

我对数据库设计相当陌生,可以在我正在从事的项目中使用一些指导。

我有三个现有的表accountsusers,以及一个表示多对多关系的联结表,称为accounts_users

您可能猜到了,accounts_users 表如下所示:

| accountId | userId |
| --------- | ------ |
| 1         | 1      |
| 1         | 2      |
| 2         | 1      |

我需要为用户添加角色,其中用户可以为他们所属的每个帐户拥有一个单一的角色。

我创建了一个角色表(包含idname),但我正在寻找下一步的指导,以便在rolesaccounts_users 之间建立关系表格。

应该在accounts_users 表中添加一个额外的列,包含roleId,还是应该添加另一个联结表?

谢谢!

【问题讨论】:

  • 我会在联结表中添加一个角色列,其中包含角色丰富数据(例如描述)的角色表的外键。您还可以考虑角色是否过期(例如临时授权书)

标签: mysql orm relational-database typeorm


【解决方案1】:

在您的联结表中存储额外的数据是完全可以的。但是,您可以使用不同的方法,具体取决于您的“角色”实体的真正含义。

  • 如果每个帐户-用户对都有其唯一关联的角色(1:1 关系),您可以直接在accounts_users 表中创建name 列。
  • 如果一个角色在多个帐户-用户对之间共享(1:N 关系),您应该使用单独的roles 表并通过将roleId 外键添加到accounts_users 表中来连接表(就像您自己写的)。

第二种解决方案也适用于角色实体携带大量信息(多列,不仅是name),因此不希望将不相关且可能不需要的数据弄乱连接表。

【讨论】:

  • 第二个要点是我的想法,所以我会走那条路。非常感谢!
猜你喜欢
  • 2021-09-28
  • 2016-03-04
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 2018-01-12
相关资源
最近更新 更多