将另一个 table 与现有联结点 table 连接起来
Joining another table with existing junction table
我对数据库设计还很陌生,可以在我正在进行的项目中使用一些指导。
我有三个现有的 tables accounts
、users
和一个代表名为 accounts_users
的多对多关系的连接点 table。
您可能猜到了,accounts_users
table 看起来像这样:
| accountId | userId |
| --------- | ------ |
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
我需要为用户添加角色,其中用户可以为他们所属的每个帐户拥有一个单一的角色。
我已经创建了一个角色 table(包含一个 id
和 name
),但我正在寻找下一步的指导,以便建立关系在 roles
和 accounts_users
table 之间。
是否应该在 accounts_users
table 中添加一个包含 roleId
的额外列,或者是否应该添加另一个连接点 table?
谢谢!
在您的联结 table 中存储额外的数据完全没问题。但是,您可以使用不同的方法,具体取决于您的“角色”实体的真正含义。
- 如果每个帐户-用户对都有其唯一关联的角色(1:1 关系),您可以直接在
accounts_users
table.[=23 中创建 name
列=]
- 如果一个角色在多个帐户用户对(1:N 关系)之间共享,您应该使用单独的
roles
table 并通过添加 table 连接 table =13=]外键到accounts_users
table(就像你自己写的一样)。
第二个解决方案也是suitable当角色实体携带大量信息时(多列,不仅name
),所以不希望弄乱连接table 与不相关且可能不需要的数据。
我对数据库设计还很陌生,可以在我正在进行的项目中使用一些指导。
我有三个现有的 tables accounts
、users
和一个代表名为 accounts_users
的多对多关系的连接点 table。
您可能猜到了,accounts_users
table 看起来像这样:
| accountId | userId |
| --------- | ------ |
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
我需要为用户添加角色,其中用户可以为他们所属的每个帐户拥有一个单一的角色。
我已经创建了一个角色 table(包含一个 id
和 name
),但我正在寻找下一步的指导,以便建立关系在 roles
和 accounts_users
table 之间。
是否应该在 accounts_users
table 中添加一个包含 roleId
的额外列,或者是否应该添加另一个连接点 table?
谢谢!
在您的联结 table 中存储额外的数据完全没问题。但是,您可以使用不同的方法,具体取决于您的“角色”实体的真正含义。
- 如果每个帐户-用户对都有其唯一关联的角色(1:1 关系),您可以直接在
accounts_users
table.[=23 中创建name
列=] - 如果一个角色在多个帐户用户对(1:N 关系)之间共享,您应该使用单独的
roles
table 并通过添加 table 连接 table =13=]外键到accounts_users
table(就像你自己写的一样)。
第二个解决方案也是suitable当角色实体携带大量信息时(多列,不仅name
),所以不希望弄乱连接table 与不相关且可能不需要的数据。