본문 바로가기
[개발] 데이터베이스/이론

[RDB] 식별자관계와 비식별자관계

by Devsong26 2023. 11. 14.

RDB(관계형 데이터베이스)에서 식별자 관계와 비식별자 관계는 데이터 모델링의 중요한 부분입니다.
 

식별자 관계 (Identifying Relationship) 

  • 이 관계는 부모 테이블의 기본 키가 자식 테이블의 기본 키로도 사용되는 경우를 말합니다.
  • 예를 들어, '사용자' 테이블과 '사용자 주소' 테이블이 있을 때, '사용자'의 기본 키가 '사용자 주소' 테이블에도 기본 키로 포함되어 있으면 이는 식별자 관계입니다.
  • 식별자 관계는 부모 테이블과 자식 테이블 간에 강한 의존성을 가지며, 부모 테이블 없이는 자식 테이블의 레코드가 존재할 수 없습니다.

비식별자 관계 (Non-Identifying Relationship)

  • 이 관계는 부모 테이블의 기본 키가 자식 테이블의 기본 키로 사용되지 않고, 외래 키로만 사용될 때를 말합니다.
  • 예를 들어, '학생' 테이블과 '학교' 테이블이 있을 때, '학교'의 기본 키가 '학생' 테이블에 외래 키로만 존재하면 이는 비식별자 관계입니다.
  • 비식별자 관계는 부모 테이블과 자식 테이블 간에 상대적으로 약한 의존성을 가지며, 부모 테이블 없이도 자식 테이블의 레코드가 독립적으로 존재할 수 있습니다.

 
각 관계는 주의할 점이 있습니다.

  • 식별자관계만을 이용하여 데이터 모델링을 전개할 경우, PK 속성의 숫자가 증가할수록 관련된 SQL 구문이 복잡해져 복잡성으로 인한 개발 오류를 유발하게 됩니다. 
  • 비식별자관계만을 이용하여 데이터 모델링을 전개할 경우, 테이블 간의 과다한 조인을 유발하여 조인에 의한 성능 저하를 불러오게 됩니다.

 
데이터 모델 관계 도출 시 식별자관계와 비식별자관계의 의미를 정확하게 이해하고 업무적 특징, 조인 관계, PK 구성을 고려하여 식별자관계/비식별관계를 결정하는 것이 중요합니다.
 
그러면 관계를 선택하는 고려사항은 무엇일까요?
 
식별자 관계

  • 반드시 부모 엔티티타입 종속
  • 자식 PK 구성에 부모 PK 포함 필요 시
  • 상속받은 PK 속성을 타 엔티티타입에 이전 필요 시

비식별자 관계

  • 약한 종속관계
  • 자식 PK 구성을 독립적으로 구성
  • 자식 PK 구성에 부모 PK 부분 불필요
  • 부모 쪽의 관계 참여가 선택 관계
  • 상속받은 PK 속성을 타 엔티티타입에 재상속 차단 필요

 
아래는 적절하게 식별자관계와 비식별자관계가 설정된 erd 예시입니다.




 
참고 도서
- 아는 만큼 보이는 데이터베이스 설계와 구축