我在考试中有一个问题,我不知道该怎么解决。
这是问题:
如何保持2个表之间的1-1或1-0关系的完整性?
现在,主键和外键将不起作用,因为这样您就可以建立1-m关系了。也许您可以通过某种方式使用唯一键或替代键?
我们需要给出create table表达式,并解释为什么它会起作用。
答案 0 :(得分:3)
这是PostgreSQL中1-1关系的示例。它需要具有可延迟约束的 standard SQL功能:
create table employee (
id int primary key not null,
name varchar(20),
desk_id int not null,
constraint uq1 unique (desk_id),
constraint fk1 foreign key (desk_id) references desk (id)
deferrable initially immediate
);
create table desk (
id int primary key not null,
desk_code varchar(20).
employee_id int not null,
constraint uq2 unique (employee_id),
constraint fk2 foreign key (employee_id) references employee (id)
deferrable initially immediate
);
简而言之:employee
的每一行都指向一个desk
。每个desk
都指向一个employee
。
据我所知,可延迟约束仅在PostgreSQL和Oracle中实现。
答案 1 :(得分:0)
我将以oracle为例
这里是1:1关系示例
df.groupby(level=[1,2], axis=1).sum()
这里是1:0..1的关系(又称射精)
create table state
(
sid number(3) ,
name varchar2(100),
gid number(3) not null,
constraint state_pk primary key (sid),
constraint gov_state_fk foreign key (gid) references gov(gid)
);
基本上是不同的,
编辑:我还添加了Unicity来保留1:0..1和1:1关系。