데이터 모델링에서 속성 간의 관계를 설정하면서 부모의 PK 속성이 자식의 PK 속성으로 가야하는지 일반 속성으로 가야 하는지 논리적으로 결정 하는 것은 여러 관점에서 중요하다
식별자와 비식별자 간의 관계를 잘모르고 데이터 모델리을 진행하면 다음과 같은 오류에 빠질 수 있다
-
식별자 관계만을 이용하여 데이터 모델링을 전개한 경우
- PK 속성의 숫자가 증가 할 수록 관련된 SQL 구문이 복잡해져서 복잡성으로 인한 개발 오류를 유발하게 된다
-
비식별자 관계만을 이용하여 데이터 모델링을 전개 할 경우
- 테이블 간의 과다한 조인을 유발하여 조인에 의한 성능 저하를 일으킬 수 있다
-
해결 방안
- 데이터 모델 관계 도출 시 식별자 관계와 비식별자 관계의 의미를 정확하게 이해
- 업무적 특징, 조인 관계, PK 구성을 고려하여 식별자/비식별자 관계를 결정
식별/비식별자 관계의 구분 설정은 데이터 모델링 초기 단계인 분석단계에서부터 이미 고려된다고 봐도 된다
관계 설정에 따라 자식의 PK 구성이 달라질 뿐만 아니라 부모와 자식 엔티티 타입 간에 관계 형성의 강도를 보여주기 때문이다
식별자 관계로만 설정하면?
식별자 관계는 그냥 부모로부터 물려 받는 관계라 생각하면 된다.
식별자 관계로만 테이블을 구성하면, 대가 올라갈수록 PK 속성의 갯수가 상승하게 되고 이는 쿼리 문 길이 증가 및 많은 속성을 동시에 조회하게 되는 문제가 발생한다
결론적으로 개발의 복잡성과 Join 누락 등의 오류 발생 확률을 증가시킨다
비식별자 관계로만 설정하면?
보통 식별자 관계로 맺어진 테이블에서 자식 테이블의 내용을 조회 할 때 부모에게 물려 받은 속성을 사용 할 때가 있다.
이 때 비식별자로만 관계가 맺어진다면, 부모 테이블까지 올라가서 조회를 해야 하는 자원 낭비가 생긴다
비식별자 선정 기준 : 어떻게 식별자를 선정해야 하나요
위의 상황에서 비식별자 관계 설정을 고려하라
독립적으로 PK를 구성한다고 함은 업무상의 필요성과 성능상 필요성 여부를 모두 포함하는 의미로 이해 하면 된다
질문
- 굳이 부모의 테이블을 물려 받을 필요가 있을까
- 식별자와 비식별자의 관계 뭐임
'Computer Science > DB' 카테고리의 다른 글
엔티티타입, 통합과 분리의 기준 (1) | 2023.09.02 |
---|---|
PK는 여러 개 설정 될 수 있는가? (0) | 2023.09.02 |