在DB2中添加非唯一外键约束

时间:2013-12-04 21:41:42

标签: sql database-design foreign-keys db2 constraints

我有这两个(简化来说明问题)表:

create table CASE_INSTANCE (id int not null, stage_id int not null,
     primary key (id, stage_id));    
create table SAMPLE (id int not null, case_id int not null);

我想在SAMPLE上添加约束,以便CASE_ID必须是CASE_INSTANCE.ID的有效值。但是,我无法使用外键执行此操作,因为CASE_INSTANCE.ID不是唯一的。如何向SAMPLE添加约束以强制执行此关系?

这适用于DB2。

2 个答案:

答案 0 :(得分:1)

添加另一个case_id唯一的表格,然后从CASE_INSTANCESAMPLE引用它。

答案 1 :(得分:0)

如果您不愿意更改模型,我担心您必须使用触发器或应用程序强制执行此操作。但是,如果某些内容取决于案例而不是案例实例,则它应该是该案例的子项,而不是案例实例。如果您没有表格ID唯一的表格,我会说您的模型有问题。