在sql中创建主键的问题

时间:2017-01-15 17:27:24

标签: mysql sql sql-server primary-key

我的表有null类型的数据,需要为null

更换零件0,m->修复

因此,更换零件可以是维修的一部分,但每次维修都不需要更换零件,当我创建表格时,我推荐更换零件id为null,但问题是当我创建主键时,它只能与不是空的。该怎么办?

1 个答案:

答案 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值。

希望有所帮助。