将约束添加到两列

时间:2014-12-05 03:40:39

标签: oracle11g constraints database-table

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

在" user"上设置唯一约束和#34;角色"没有用。同时在所有3列上设置唯一约束也无济于事。

有人可以建议如何在这里设置约束。

EDIT1:

以下是预期的结果:

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

依此类推......我想要限制的是,现在U1已经映射到R1,U1不应该映射到任何其他角色。

1 个答案:

答案 0 :(得分:0)

然后,您需要进一步更改表格设计规范化。如果USERROLE之间的关系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
   );