我有一个包含"User","Role"
列和"Application"
列的数据库表。
我的要求是用户只能拥有一个角色,但他可以属于多个应用程序。我希望以约束的形式添加此限制,但我无法实现它。
在" user"上设置唯一约束和#34;角色"没有用。同时在所有3列上设置唯一约束也无济于事。
有人可以建议如何在这里设置约束。
EDIT1:
以下是预期的结果:
User Role Application
U1 R1 A1
U1 R1 A2
U2 R2 A3
依此类推......我想要限制的是,现在U1已经映射到R1,U1不应该映射到任何其他角色。
答案 0 :(得分:0)
然后,您需要进一步更改表格设计和规范化。如果USER
和ROLE
之间的关系为1-to-1
,则为user_role_mapping
设置一个查找表,并为user_application_mapping
创建另一个表。
理想情况下,您的两个表格如下:
Create table user_role_map
(
user <datatype>,
role <datatype>
constraint user_pk primary key (user, role)
);
Create table user_application_map
(
user <datatype> NOT NULL,
applications <datatype> NOT NULL
);