2

我的 sql 中有两个表:

用户:

id    name     roleid
1     David    1
2     Sean     2
3     Joe      1

角色:

roleid    desc
1         copy
2         delete
3         move

现在我使用这个 cmd 来选择具有用户权限的用户

SELECT * FROM Users u INNER JOIN Roles r ON u.roleid = r.roleid

现在我想知道是否可以构建 SQL 表(角色表),它将是每个用户的动态角色 ID 数。就像是:

用户:

id    name     roleid roleid2 roleid3
1     David    1      2       3
2     Sean     2   
3     Joe      1      3
4

2 回答 2

1

使用关联实体Users来处理和之间的多对多关系Roles。表中的复合主键UserRole将防止角色的重复分配,并且引用UsersandRoles表的外键将保持引用完整性。

有关示例实现,请参阅SQL fiddle

于 2013-02-04T22:03:20.830 回答
0

首先,我建议你使用多对多关系。意思是三表:UsersRoles(userid,roleid) 其次,在典型的SQL语句中创建动态列数是不可能的。但它可能通过使用存储过程。

这是工作示例 sqlfiddle

于 2013-02-04T21:26:15.027 回答