sql - 如何将 2 个外键分配给一行?

标签 sql sql-server database sql-server-2008

我有表 rolesusersroles 中的 idusers 表中 role 列的外键。
有 2 个角色:support 和 manager。我如何指定用户 peter 被分配了这两个角色?

角色

| id | role    |
|----|---------|
| 1  | support |
| 2  | manager |

用户

| id | user     | pass  | role (FK) |
|----|----------|-------|-----------|
| 1  | peter    | hash1 | 1,2       | <-- 2 foreign keys
| 2  | jennifer | hash2 | 2         |

最佳答案

这是一个经典的多对多关系。一个用户可以有多个角色,一个角色可以分配给多个用户。 您可能需要使用如下信息创建一个新的 UserRole 表:

id userId roleId
1    1      1
2    1      2
3    2      2
4 ...

如果你不想要代理键,删除 id 并使 userId + roleId 成为主键:

userId roleId
  1      1
  1      2
  2      2

关于sql - 如何将 2 个外键分配给一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38702649/

相关文章:

php - android、php、mysql之间通讯失败

mysql - 获取日期,即使它不存在于 SQL SELECT 语句的表中

sql - 如何在 MSSQL 查询中修剪前导和尾随制表符空格

SQL - 如何使用用户定义的函数来约束两个表之间的值

asp.net - 带有 MVC 3 的 MySql 连接器/网络

.net - 在 .NET 中快速搜索 XMl 文件(或如何索引 XML 文件)

sql - 更新数组json的数据

php - 如何构建此 SQL 查询。合并多个表?

sql - 数据库的事务日志已满

database - Postgresql:将不同的数据库复制到一个具有不同模式的数据库中