我实际上想要在Oracle的ERD中实现两个表之间的强制一对一关系。这两张表格是州长和州长。一个州长只能管理一个州,一个州必须有一个且只有一个省长。我想在Oracle中实现它。我写了如下查询一对一关系约束
create table gov
(gid number(3) ,name varchar2(100),
constraint gov_pk primary key (gid)
);
create table state
(
sid number(3) ,
name varchar2(100),
gid number(3),
constraint state_pk primary key (sid),
constraint gov_state_fk foreign key (gid) references gov(gid),
constraint state_uk unique(gid,name)
);
但这似乎并不奏效。我找不到任何替代方法。请帮我解决一下这个。我会感谢你。请让我知道为什么没有建立一对一的关系。
你可能想要一个唯一的关键只是在状态表中的gid –
该模型没有多大意义。你可能有一个“状态”表,这可能是固定的(在大多数情况下,至少在一定的时间内)。你还想要什么 - 一张总督表,上面有个人资料,如出生日期和姓名?如果一个人不再是总督,你会从桌面上删除它们吗?如果不是,那么它不是一对一的关系 - 一方面你可能有“零或一个”。如果你真的需要永远保持一对一,为什么你需要两张桌子?在State表中写下所有的Governor属性。 – mathguy
谢谢@mathguy您的回复。它确实帮助我消除了很多混乱。但是,我仍然想问,如果我从表中删除一个管理员,为什么它不是一对一的关系? –