2014-07-23 3 views
1

이것은 단순히 디자인이 좋지 않을 수 있습니다. 내 목표는 동일한 테이블에 대한 외래 키 포인트를 포함하는 테이블을 갖는 것입니다. 비록 내가 책을 저장하고 있고, 특정 시리즈에서 속편을 추적하고 싶다면 예를 든다. 테이블은 다음과 같습니다동일한 테이블을 가리키는 외래 키를 정의하는 방법

|id|   title|sequel| 
|--|--------------|------| 
| 1|Harry Potter 1|  3| 
| 2|Great Gatsby | null| 
| 3|Harry Potter 2| null| 
|------------------------| 

을 내가 속편 컬럼이 동일한 테이블에서 ID에 바인딩 할 것입니다. 바람직하게는 같은 테이블의 다른 ID로 제한 할 수 있습니다. 이 열을 단순히 Books 테이블을 가리키는 외래 키로 정의 할 수 있습니까?

+1

[MySQL의에서 자기 참조 표 필드 (의 중복 가능성 http://stackoverflow.com/questions/2971593/self-referential-table-fields-in -mysql) –

+1

http://stackoverflow.com/questions/2971593/self-referential-table-fields-in-mysql –

답변

0

예, 확실히 할 수 있습니다

-- Add the foreign key 
ALTER TABLE books ADD CONSTRAINT books_fk 
FOREIGN KEY (sequel) REFERENCES books (id); 

-- Make sure it's different than the id 
ALTER TABLE books ADD CONSTRAINT book_id_sequel_chk 
CHECK (id <> sequel); 
관련 문제