完整性约束使 sur 两列包含两个相关表的相同值
Integrity constraints to make sur two columns contain same values for two related tables
我的 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 中使用完整性约束。
这可能吗?
正确的答案是规范化数据模型而不是复制 data
table 中的列。
也就是说,如果您在 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 );
我的 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 中使用完整性约束。
这可能吗?
正确的答案是规范化数据模型而不是复制 data
table 中的列。
也就是说,如果您在 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 );