2009-05-28 3 views

답변

4

트레이드 오프입니다. 외래 키에 대한 일반적인 인수는 외래 키에 대한 인덱스가 삽입/업데이트/삭제시 약간의 성능 오버 헤드를 초래한다는 것입니다. 모든 색인과 동일합니다.

그러나 인덱스는 해당 열을 통해 검색 할 때도 큰 이점을 제공합니다.

SELECT * FROM Child WHERE parent_id = :id 

또한 고아 어린이를위한 검색 및 외래 키 제약 조건을 생략의 피할 수없는 결과이다 bollixed 참조를, 청소의 오버 헤드를 과소 평가하지 않습니다.

-- Typical chore: searching for orphaned child rows. 

SELECT c.* FROM Child c LEFT OUTER JOIN Parent p 
    ON (c.parent_id = p.parent_id) 
WHERE p.parent_id IS NULL; 

또한 는 다형성 협회 또는 단체 - 속성 - 값으로 외래 키를 사용할 수없는 일부 데이터베이스 디자인이 있습니다. 그러나 이러한 디자인은 그 자체로 반 패턴입니다.

1

성능. 부모 레코드가 있는지 확인하기 위해 하위 레코드를 삽입 할 때 비용이 발생합니다. 상위 레코드에 계속 액세스 할 수 있습니다 (하위 테이블에 parentID 열이 있고 참조 무결성이 없다고 가정).

관련 문제