1

我設計,目前看起來像這樣的表:使用外鍵可以在同一個表中建立父子關係嗎?

Container 
    ContaienrId 
    ParentContainerId 
    LotsOfOtherColumns 

的想法是,一個集裝箱可以有一個父(這又可以有一個父...)。另外,幾個容器可以具有相同的父級。

我可以堅持在那裏的ID,但我希望父母可以通過實體框架訪問。要做到這一點,我需要一個外鍵。 (我也希望有一個FK違反保護當進入ParentContainerId一個無效的號碼。)

但是當我嘗試把外鍵在這些列上我得到這個錯誤:

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

我得到它是什麼意思,我不能使用ParentContainerId,除非我把一個UNIQUE約束。但是有幾個容器可以擁有相同的父級,所以這不起作用。

有沒有辦法使用一個表,並有一個外鍵的父子關係?

+0

我認爲這意味着你的FK應該在__點PK/UNIQUE列。 _那將是有道理的。 FK是獨一無二的。 – geomagas

回答

3

我只是覺得你必須把唯一約束的數據筒不是的parentID

+0

我覺得有點笨......就是這樣!在我切換哪一個是FK列後,它工作正常。 – Vaccano

4

你能做到這樣的,如果你想模擬一個一對多的關係:

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) 

約束,將允許在每個父容器最多一個子容器。

相關問題