외래키 제약조건 장단점이 궁금합니다. 0 2 3,247

by Dev03 [2018.01.10 15:23:46]


제목 그대로입니다.

외래키 제약조건의 장단점과 

모델상에서 외래키로 표현된(?) 칼럼들에 외래키 제약조건을 생성해 주는 것이 좋은지, 아니면 생성하지 않는 것이 좋을지 판단은 어떻게 해야할까요 ?

 

검색해보니, 

FK 제약은 가장 확실하고 간편한 방법이지만 성능상에 문제 를 유발할 수 있다. 반드시 적용되어야 하는 부모 자식 관계에 적용하는 것이 일반적이다.

FK 제약은 인덱스를 생성한다. 자식 테이블의 데이터 변경은 부모 테이블에 PK 제약으로 만들어 진 UNIQUE 인덱스를 이용하고, 부모 테이블의 데이터 변경은 자식 테이블의 인덱스를 이용한다. 인덱스가 없다면 테이블 FULL SCAN이 발생할 것이다.

이런 내용이 나오던데, 확실히 감이 안 오네요...

 

외래키로 표현되어있지만, 제약조건은 걸려있는 경우를 한 번도 보지 못했기도 해서, 궁금하네요.

by 마농 [2018.01.11 10:02:08]

1. FK 제약은 인덱스를 생성한다.?
  - 표현이 모호하네요. 자동생성되는 것으로 오해할 소지가 있네요.
  - FK 제약 항목에 인덱스를 생성하는것이 바람직하다.
2. 자식 테이블의 데이터 변경은 부모 테이블에 PK 제약으로 만들어 진 UNIQUE 인덱스를 이용
  - 해당 FK 항목이 올바른지 판단하기 위해 부모 테이블 PK 인덱스 검색을 통해 확인해야 함.
3. 부모 테이블의 데이터 변경은 자식 테이블의 인덱스를 이용한다.
  - 부모의 PK 변경시 변경전 PK를 가진 자식이 있는지 확인해야 함
  - 자식의 FK 항목에 인덱스가 있어야 하는 이유


by 우리집아찌 [2018.01.11 13:00:02]

일반적으로 FK는 실무에서 사용하지않습니다. 전 쓰는곳을 못봤습니다.

하지만 TEST DB에서는 FK를 적용해서 테스트 하기를 권장합니다.

테스트는 못했지만 관계형 데이터 모델링(김기창) 에서는 FK 적용시 10~15% 성능저하가 일어난다고 합니다.

책저자는  FK적용이 맞다고 하긴 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입