0

我的 oracle 数据库中有两个表。

+--------+                     +---------+    
+ data   + --1..0-------0..n --+   PAQ   +  
+--------+                     +---------+

PAQ 有很多数据。

以下是它们如何制作的示例:

create table data {
data_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
value number,
data_date date,
E_FLAG char,
paq_id number,
primary key(data_id),
foreign key(paq_id) references paq.paq_id
}

create table paq {
paq_id number generated by default as identity,
E_FLAG char,
...
primary key(paq_id)
}

有一列重复,称为 E_FLAG。

我想确保以下内容:
如果 data1 属于 paq1,则 data1.E_FLAG == paq1.E_FLAG。在 oracle 中使用完整性约束。

我这可能吗?

4

1 回答 1

1

正确的答案是规范化数据模型,而不是复制表中的列data

也就是说,如果您在paq

create unique index uniq_paq_flag
    on paq( paq_id, e_flag );

然后,您可以在该组合上创建一个外键约束,以确保e_flag值匹配

alter table data
  add constraint fk_match_flag 
    foreign key( paq_id, e_flag ) 
    references paq( paq_id, e_flag );
于 2021-09-03T00:25:05.070 回答