嵌套数据的关系模型

时间:2020-01-04 17:14:03

标签: database-design relational-database entity-relationship

应如何在关系数据库中为以下对象设置实体(表):

“每个实验都有一个应变。一个应变可以有多个实验。每个应变都有一个父应变,它是一个或多个其他菌株的组合。

< p>

尤其是我在如何将父级应变分配给该应变方面感到很困难。

示例: 菌株99是菌株,其亲代菌株通常是菌株98(但也可以是菌株96,菌株197的组合)。 我应该如何设计表和关系,以便每个应变都具有一个父应变?

谢谢。

1 个答案:

答案 0 :(得分:0)

这是一个多对多的关系。 “ ParentStrain”似乎与“ Strain”(它自己的实体)有所不同。这是一组菌株。这表明:

create table parentstrains (
    parentstrainid int generated always as identity primary key
);

create table parentstrainstrains (
    parentstrainstrainid int generated always as identity primary key,
    parentstrainid int not null references parentstrains(parentstrainid),
    strainid int not null references strains(strainid)
);

然后:

alter table strains add constraint fk_strains_parentstrains
    foreign key (parentstrainid) references parentstrains(parentstrainid);