본문 바로가기

데이터 Story/모델링 이론

종속 엔터티의 식별(Identifying) 관계

식별(Identifying) 관계와 비식별(Non-Identifying) 관계는 단순한 개념입니다. 언제 적용해야 하는지를 결정하기가 어렵죠.

 

상위 엔터티의 주 식별자가 하위 엔터티에 주 식별자로 상속되면 식별(Identifying) 관계입니다. 엄밀히 말해 종속 엔터티와 무관합니다.

 

하지만 부모 엔터티에 존재 종속(Existence Dependency)된 종속 엔터티는 대부분 식별 관계로 상속받습니다. 이 원칙은 지켜주는 게 좋습니다. 두 엔터티가 관계가 있고 하위 엔터티가 종속 엔터티라는 것이 분명하다면, 식별 관계로 상속 받는 것이 좋습니다.

 

문제는 예외인데요. 나중에 설명하겠지만 업무 식별자를 주 식별자로 채택하는 것을 원칙으로 불가피할 경우 인조 식별자를 채택해야 하는데요. 인조 식별자를 사용해야 하는 대표적인 때가 주 식별자가 복잡할 때입니다.

 

[그림1] 고객주소 엔터티는 종속 엔터티입니다. 주 식별자는 상속받은 부모 엔터티의 주 식별자(고객번호)에 부분 주 식별자(주소순번)를 추가해 만듭니다.


 

[그림1]

 

[그림2]는 고객주소 엔터티와 관계가 존재하는 모델입니다. 집주소와 회사주소를 관리하기 위해 관계선이 2개가 필요합니다. 조금 복잡해 보이죠. 이 정도면 그렇게 복잡한 것은 아니지만 여러 단점이 존재할 수 있습니다.


 

[그림2]

 

위 모델이 단점이 있다고 가정하면 고객주소 엔터티의 주 식별자를 인조 식별자로 사용해야 하는데요. [그림3]과 같이요.


 

[그림3]

 

단순하게 판단할 문제는 아니지만 일반적으로 [그림2] 보다는 [그림3]이 단순한 모델이고, 단순한 모델이 좋은 모델이 될 가능성이 큽니다.

 

[그림3]과 같을 때 고객주소 엔터티는 [그림4]와 같이 비식별 관계가 됩니다. 업무 식별자에 해당하는 고객번호+주소순번 대신 인조 식별자인 주소번호를 사용한 거죠.


 

[그림4]

 

종속 엔터티라고 반드시 식별(Identifying) 관계로 상속받는 것은 아닙니다. 비식별 관계로 상속받을 때가 간혹 있습니다.

하지만 반대의 경우는 매우 드물 거 같습니다. 참조 엔터티인데 식별 관계로 상속 받는 것은 일반적으로 잘못된 모델 같습니다.