我想为我的SQL数据库设计一个模式,其中用户可以拥有多个角色,如admin,tester,developer,他们将根据自己的角色获得模块的可访问性(测试,开发,性能)。 我尝试先设计三个用户,其中用户将拥有id及其角色id,第二个是角色,第三个将是具有用户和角色的外键的模块,在该模板中,用户将分配权限那个角色。
但是当用户有多个角色时它会失败
答案 0 :(得分:0)
对我来说似乎是一个基本的多对多关系 - 所以你需要三张桌子:
两个实体表和一个连词表
在您的情况下,应该有一个用户表,一个角色表和userToRole表
模块/角色通常也是多对多关系 - 因为许多角色可能连接到单个模块,而许多模块可能连接到单个角色。
基本实现可能如下所示:
tblUser
(
User_id int primary key,
-- Other user related columns
)
tblRole
{
Role_Id int primary key,
-- Other role related columns
}
tblUserToRole
{
URT_User int Foreign key to tblUser,
URT_Role int Foreign key to tblRole,
Primary key (URT_User, URT_Role)
}