RDB(관계형 데이터베이스)에서 식별자 관계와 비식별자 관계는 데이터 모델링의 중요한 부분입니다.
식별자 관계 (Identifying Relationship)
- 이 관계는 부모 테이블의 기본 키가 자식 테이블의 기본 키로도 사용되는 경우를 말합니다.
- 예를 들어, '사용자' 테이블과 '사용자 주소' 테이블이 있을 때, '사용자'의 기본 키가 '사용자 주소' 테이블에도 기본 키로 포함되어 있으면 이는 식별자 관계입니다.
- 식별자 관계는 부모 테이블과 자식 테이블 간에 강한 의존성을 가지며, 부모 테이블 없이는 자식 테이블의 레코드가 존재할 수 없습니다.
비식별자 관계 (Non-Identifying Relationship)
- 이 관계는 부모 테이블의 기본 키가 자식 테이블의 기본 키로 사용되지 않고, 외래 키로만 사용될 때를 말합니다.
- 예를 들어, '학생' 테이블과 '학교' 테이블이 있을 때, '학교'의 기본 키가 '학생' 테이블에 외래 키로만 존재하면 이는 비식별자 관계입니다.
- 비식별자 관계는 부모 테이블과 자식 테이블 간에 상대적으로 약한 의존성을 가지며, 부모 테이블 없이도 자식 테이블의 레코드가 독립적으로 존재할 수 있습니다.
각 관계는 주의할 점이 있습니다.
- 식별자관계만을 이용하여 데이터 모델링을 전개할 경우, PK 속성의 숫자가 증가할수록 관련된 SQL 구문이 복잡해져 복잡성으로 인한 개발 오류를 유발하게 됩니다.
- 비식별자관계만을 이용하여 데이터 모델링을 전개할 경우, 테이블 간의 과다한 조인을 유발하여 조인에 의한 성능 저하를 불러오게 됩니다.
데이터 모델 관계 도출 시 식별자관계와 비식별자관계의 의미를 정확하게 이해하고 업무적 특징, 조인 관계, PK 구성을 고려하여 식별자관계/비식별관계를 결정하는 것이 중요합니다.
그러면 관계를 선택하는 고려사항은 무엇일까요?
식별자 관계
- 반드시 부모 엔티티타입 종속
- 자식 PK 구성에 부모 PK 포함 필요 시
- 상속받은 PK 속성을 타 엔티티타입에 이전 필요 시
비식별자 관계
- 약한 종속관계
- 자식 PK 구성을 독립적으로 구성
- 자식 PK 구성에 부모 PK 부분 불필요
- 부모 쪽의 관계 참여가 선택 관계
- 상속받은 PK 속성을 타 엔티티타입에 재상속 차단 필요
아래는 적절하게 식별자관계와 비식별자관계가 설정된 erd 예시입니다.
참고 도서
- 아는 만큼 보이는 데이터베이스 설계와 구축
'[개발] 데이터베이스 > 이론' 카테고리의 다른 글
[RDB] 자기참조관계 모델링 기법 (1) | 2023.11.22 |
---|---|
[RDB] Primary key와 Unique Index (0) | 2023.11.17 |
[RDB] 엔티티타입의 통합과 분리 (0) | 2023.11.16 |
[RDB] 이력 유형 데이터 모델 (1) | 2023.11.15 |
[RDB] PK 컬럼 순서 (0) | 2023.11.10 |