gpt4 book ai didi

sql - 可以使用外键在同一张表中对父子关系建模吗?

转载 作者:行者123 更新时间:2023-12-02 07:33:26 25 4
gpt4 key购买 nike

我正在设计一个目前看起来像这样的表格:

Container
ContaienrId
ParentContainerId
LotsOfOtherColumns

这个想法是一个容器可以有一个父容器(它又可以有一个父容器......)。此外,多个容器可以具有相同的父容器。

我可以将 ID 放在那里,但我希望可以通过 Entity Framework 访问父级。为此,我需要一个外键。 (如果为 ParentContainerId 输入了无效数字,我还希望保护 FK 违规。)

但是当我尝试将外键放在这些列上时,我得到了这个错误:

The columns in table 'Container (Container)' do not match an existing primary key or UNIQUE constraint.

我明白它在说什么,我不能使用 ParentContainerId,除非我对它施加 UNIQUE 约束。但是多个容器可以有相同的父容器,所以这是行不通的。

有没有办法使用一张表并拥有外键父子关系?

最佳答案

如果你想模拟一对多关系,你可以这样做:

create table container( 
container_id int not null,
parent_container_id int,
more_data varchar,
primary key(container_id),
foreign key (parent_container_id) references container (container_id)
);

如果你创建一个额外的

unique(parent_container_id)

约束,您将在每个父容器中最多允许一个子容器。

关于sql - 可以使用外键在同一张表中对父子关系建模吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com