외래 키
RDBMS에서 테이블 간의 관계를 설정해 줄 때 일반적으로 외래 키를 통해, 다른 테이블과 같은 키를 공유하고 이를 이용하여 Join으로 사용한다. 외래 키를 사용하여 테이블 간의 관계를 정립할 때는 식별 관계 전략과 비식별 관계 전략이 있다.
식별 관계
식별 관계란 부모 테이블의 기본 키 혹은 유니크 키를 자식 테이블이 자신의 기본 키로 사용하는 관계를 말한다. 부모 테이블의 키가 자식의 기본 키에 포함되기 때문에, 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다. 다시말해, 부모 데이터가 없다면 자식 데이터는 생성될 수 없고, 부모 테이블에 자식 테이블이 종속된다.
식별관계의 장점은 데이터 정합성 유지를 DB에서 한 번 더 확인할 수 있고, 자식 테이블에 데이터가 존재하면 부모 데이터도 반드시 존재한다고 보장할 수 있다.
반면 식별관계의 단점은 요구사항이 변경 되었을 때 구조 변경이 어려울 수 있다.
비식별 관계
비식별 관계란 부모 테이블의 기본 키 혹은 유니크 키를 자신의 기본 키로 사용하지 않고 외래 키로 사용하는 관계를 말한다. 때문에 자식 데이터는 부모 데이터가 없어도 독립적으로 생성될 수 있고, 부모와의 의존성을 줄일 수 있기 때문에 조금 더 자유로운 데이터 생성과 수정이 가능하다.
비식별 관계의 장점은 변경되는 요구사항을 유동적으로 수용할 수 있고, 부모 데이터와 독립적인 자식 데이터를 생성할 수 있다.
반면 비식별 관계의 단점은 데이터의 정합성을 지키기 위해 별도의 비즈니스 로직이 필요하고, 자식 데이터가 존재해도 부모 데이터가 존재하지 않을 수 있다. 즉, 데이터 무결성을 보장하지 않는다.