我的表有null类型的数据,需要为null
更换零件0,m->修复
因此,更换零件可以是维修的一部分,但每次维修都不需要更换零件,当我创建表格时,我推荐更换零件id为null,但问题是当我创建主键时,它只能与不是空的。该怎么办?
答案 0 :(得分:0)
该问题仅描述了维修和更换零件之间关系的一半。 您声明维修可能包含零个以上的更换零件。
但是(1)是否可以在零次或多次维修中采用相同的更换部件,或者(2)是维修所消耗的更换部件,使其在维修中只能出现零次或一次?
有必要明确这一点,因为(1)和(2)导致不同的数据库方案:
(1)是一个多对多的关系,并导致一个单独的表连接零件和修理:
create table part (
partId int primary key
);
create table repair (
repairId int primary key
);
create table part_repair (
partId int references part (partId),
repairId int references repair (repairId)
primary key (partId, repairId)
);
(2)部分可用于零或一次修复;店铺修理部分:
create table repair (
repairId int primary key
);
create table part (
partId int primary key,
repairId int references repair(repairId)
);
请注意,repairId
部分可能会为未分配给修复的部分采用NULL
值。
希望有所帮助。