본문 바로가기
데이터베이스

[데이터베이스] 외래키(FK) 식별관계와 비식별관계

by sum_mit45 2023. 10. 17.
728x90
반응형

RDB에서 외래키를 설정해 줄 때, '식별 관계'와 '비식별 관계'가 있다.

식별 관계

 식별관계란, 부모 테이블의 기본키(PK) 또는 UNIQUE KEY를 자식 테이블이 자신의 기본 키로 사용하는 관계이다. 부모 테이블의 키각 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다. 즉, 부모 데이터가 없다면 자식 데이터가 생길 수 없다.

 

장점

- 데이터의 정합성 유지를 DB에서 한 번 더 할 수 있다.

- 자식 테이블에 데이터가 존재한다면, 부모 데이터도 반드시 존재한다고 보장할 수 있다.

 

단점

- 요구 사항이 변경되었을 경우 구조 변경이 어렵다. 

 

비식별 관계

 비식별관계란, 부모 테이블의 기본키(PK) 또는 UNIQUE KEY를 자신의 기본키로 사용하지 않고, 외래 키로 사용하는 관계이다. 자식 데이터는 부모 데이터가 없어도 독립적으로 생성될 수 있다. 부모와의 의존성을 줄일 수 있기 때문에 조금 더 자유로운 데이터 생성과 수정이 가능하다. 

 

장점

- 변경되는 요구사항을 유동적으로 수용할 수 있다.

- 부모 데이터와 독립적인 자식 데이터를 생성할 수 있다.

 

단점

- 데이터의 정합성을 지키기 위해서 별도의 로직이 필요하다.

- 자식 데이터가 존재해도 부모 데이터가 존재하지 않을 수 있다. -> 데이터의 무결성을 보장하지 않는다. 

728x90
반응형