관계형 데이터베이스에서 두 테이블 사이의 참조 관계를 설정할 때 식별 관계와 비-식별 관계 중 하나를 선택할 수 있다.
게시판과 댓글에 대한 데이터베이스를 설계할 때, 식별 관계와 비-식별 관계로 두 테이블의 참조 관계를 설정한 각각의 경우에 대해서 알아 보자. 댓글 테이블이 게시판 테이블을 참조하는 형태가 될 것이다. 게시판 하나에 댓글이 없을 수도 있고, 하나 이상의 댓글이 있을 수 있다.
식별 관계는 기본 키로, 비-식별 관계는 외래 키로 부모 테이블을 참조한다는 것을 알았다. 이게 무슨 의미를 가질까?
부모 테이블을 기본 키로 참조할 경우(식별 관계), 부모 테이블에 참조하고자 하는 데이터가 없다면 자식 테이블에 데이터를 삽입하는 것이 불가능하다. 반면 부모 테이블을 외래 키로 참조할 경우(비-식별 관계), 부모 테이블에 참조할 데이터가 없어도 데이터를 삽입하는 것이 가능하다.
즉, 식별 관계의 경우는 테이블 관리가 힘들다는 단점이 있지만 데이터의 정합성을 보장한다는 장점이 있다. 반면 비-식별 관계의 경우 데이터의 정합성을 보장하지 않는다는 단점이 있지만 테이블을 관리하기 쉽다는 장점이 있다.
따라서 비즈니스 로직이 변경될 일이 잦지 않다면 식별 관계를, 자주 변경된다면 비-식별 관계를 쓰는 것이 좋다. 프로젝트의 환경에 따라서 적절한 참조 관계를 설정하자.