Oracle11g 向两列添加约束

Oracle11g 向两列添加约束,oracle11g,constraints,database-table,Oracle11g,Constraints,Database Table,我有一个数据库表,其中包含列“用户”、“角色”和“应用程序”。 我的要求是,一个用户只能有一个角色,但他可以属于多个应用程序。我希望以约束的形式添加此限制,但我无法实现它 在“用户”和“角色”上设置唯一约束将没有帮助。此外,在所有3列上设置唯一约束也没有帮助 有人能建议如何在这里设置约束吗 编辑1: 以下是预期结果: User Role Application U1 R1 A1 U1 R1 A2 U2 R2 A3 等等。。。我想限制的是,

我有一个数据库表,其中包含列
“用户”、“角色”
“应用程序”
。 我的要求是,一个用户只能有一个角色,但他可以属于多个应用程序。我希望以约束的形式添加此限制,但我无法实现它

在“用户”和“角色”上设置唯一约束将没有帮助。此外,在所有3列上设置唯一约束也没有帮助

有人能建议如何在这里设置约束吗

编辑1:

以下是预期结果:

User   Role   Application
U1     R1     A1
U1     R1     A2
U2     R2     A3

等等。。。我想限制的是,现在U1已经映射到R1,U1不应该映射到任何其他角色。

然后您需要更改表设计,并进一步规范它。如果
用户
角色
之间的关系是
1对1
,则为
用户角色映射创建一个查找表
,并为
用户应用程序映射创建另一个表

理想情况下,您的两张桌子如下所示:

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
   );
创建表用户角色映射
(
用户,
角色
约束用户\u pk主键(用户、角色)
);
创建表用户\应用程序\映射
(
用户不为空,
应用程序不为空
);

我可能会问,一个用户可以关联多少个应用程序?目前不超过6个,但列表可以增加。是否允许您在表上创建触发器?还是快速刷新物化视图?同意,但该选项不可用。然后对用户和角色进行唯一约束。简单!这是行不通的,正如我所说,具有相同角色的用户可以属于多个应用程序,这意味着每个应用程序都必须重复用户角色行。您混淆了唯一组合和相同组合的重复。你能给出一些例子并展示你想要的结果吗?那么你的意思是改变模式是不可能的,答案的范围仅限于此表?