Oracle SQL在其他表中约束相同的值

时间:2018-06-01 18:51:30

标签: sql database oracle

我需要一个简短的答案,如何制定约束时 我有表A,B,C,E

  • 表E具有E_ID(E id是主键)
  • 表B具有B_ID,E_ID(E id是外键)
  • 表C具有C_ID,E_ID(E id是外键)
  • 表A有A_ID,B_ID,C_ID(B和C id是外键)

其中id是主键。

我想约束确保我表A我有C_ID和B_ID具有相同E_ID的记录。 并且它应该仍然具有第三范式。

2 个答案:

答案 0 :(得分:0)

您需要以下四个限制:

alter table a add constraint fk1 foreign key (b_id) references b (b_id);
alter table a add constraint fk2 foreign key (c_id) references c (c_id);
alter table c add constraint fk3 foreign key (e_id) references e (e_id);
alter table b add constraint fk4 foreign key (e_id) references e (e_id);

答案 1 :(得分:0)

一种方法是在表e_id中重复a,然后将其用于外键约束。

请注意此数据模型中唯一键的外键关系:

create table e (eid int primary key);

create table b (bid int primary key, 
                eid int references e(eid),
                unique (bid, eid)
               );

create table c (cid int primary key, 
                eid int references e(eid),
                unique (cid, eid)
               );

create table a (aid int primary key, 
                bid int references b(bid),
                cid int references c(cid),
                eid int references e(eid),
                foreign key (bid, eid) references b(bid, eid),
                foreign key (cid, eid) references c(cid, eid)
               );

Here是一个SQL小提琴。