将另一个 table 与现有联结点 table 连接起来

Joining another table with existing junction table

我对数据库设计还很陌生,可以在我正在进行的项目中使用一些指导。

我有三个现有的 tables accountsusers 和一个代表名为 accounts_users 的多对多关系的连接点 table。

您可能猜到了,accounts_users table 看起来像这样:

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

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

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

是否应该在 accounts_users table 中添加一个包含 roleId 的额外列,或者是否应该添加另一个连接点 table?

谢谢!

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

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

第二个解决方案也是suitable当角色实体携带大量信息时(多列,不仅name),所以不希望弄乱连接table 与不相关且可能不需要的数据。