1

:상위 키 관계를 외래 키를 사용하여 동일한 테이블에서 모델링 할 수 있습니까? 나는 현재 다음과 같습니다 테이블을 설계하고

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.

을 그것은 UNIQUE 제약 조건을 넣지 않으면 ParentContainerId를 사용하지 않습니다. 하지만 여러 컨테이너는 동일한 부모를 가질 수 있으므로 작동하지 않습니다.

하나의 테이블을 사용하고 외래 키 부모 관계를 갖는 방법이 있습니까?

+0

여러분의 FK가 PK/UNIQUE 컬럼을 _point해야한다고 생각합니다. _That_는 이해할 수 있습니다. FK가 UNIQUE가 될 이유는 없습니다. – geomagas

답변

3

난 그냥 당신이 ContainerId하지에 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) 

제약 조건을 만드는 경우

, 각 부모 컨테이너에 최대 하나 개의 자식 컨테이너에 수 있습니다.

관련 문제