본문 바로가기

데이터 Story/모델링 이론

종속 관계와 참조 관계

[그림1]은 종속 관계입니다. 상품가격 데이터는 상품이 존재하지 않으면 존재할 수 없으므로(존재 존속됐으므로두 엔터티의 관계는 완전한 종속 관계입니다.


 

[그림1]

 

두 엔터티가 종속 관계면 엔터티명도 보통 유사합니다. 그리고 보통 부모 엔터티의 식별자는 자식 엔터티의 식별자로 상속됩니다.

 

[그림2]도 종속 관계이지만 팀은 특정 리그에 속해 있어야 한다는 요건이 있어야 종속 관계로 도출할 수 있습니다. 만약 일반적인 요건이라면 리그와 팀은 별개로 존재할 수 있습니다.


 

[그림2]

 

팀이 생기면 한 리그에만 속해야 한다는 요건에 따라 종속 관계로 도출됐고 식별자로서 상속했는데요. [그림1] 모델과 약간 다른 면이 있습니다. 요건이 바뀔 가능성이 있다는 것이고요. 팀 엔터티는 실체 엔터티라 식별자를 단순하게 만들 필요가 있다는 것입니다.

 

사회인 야구 팀이라면 리그에 속하지 않을 수 있습니다. 프로야구 팀이라도 리그가 바뀔 여지는 있고요. 이런 가능성은 염두에 둬야 합니다그리고 팀 엔터티의 주 식별자는 팀번호가 되는 게 간명합니다. 실체 엔터티의 주 식별자 속성이 두 개 이상이 되면 바람직하지 않습니다.

 

그래서 [그림3] 모델과 같이 단독 속성으로 주 식별자를 정하면 리그번호는 자연스럽게 일반 속성이 됩니다.


 

[그림3]

 

하지만 [그림3] 모델과 같은 관계선으로(참조 관계로) 표현하면 팀이 리그에 종속돼 있다는 요건이 관계에 의해서 관리되지 않고 업무 규칙에 의해서 관리됩니다. 즉 요건이 깨질 수도 있다는 것을 의미합니다.

 

이와 같이 종속 관계를 느슨하게 관리하면 확장성은 좋아지게 됩니다. , 확장성을 고려하면 종속 관계가 느슨해지는(Loosely Coupled) 것이죠. 존재 종속이라는 데이터 성격과 주 식별자의 효율성, 업무의 변경 가능성 등을 고려해 판단할 필요가 있습니다.

 

[그림4] 모델은 종속 관계가 아닙니다. 팀 엔터티에 관계 속성인 리그번호 값이 널(Null)을 허용하므로 팀은 리그가 없어도 별도로 존재할 수 있습니다. , 팀은 창단됐지만 리그에 참여하지 않은 상태로 존재할 수 있다는 요건이 있는 것입니다. 따라서 단순 참조 관계입니다.


 

[그림4]

 

[그림5]의 두 엔터티도 참조 관계입니다. 관계를 삭제해 사원 엔터티에서 부서코드 속성이 삭제 되더라도 사원 데이터는 존재할 수 있습니다. 중요한 속성을 관리하지 못할 뿐이지 사원의 존재 자체가 문제 되는 것은 아닙니다.

 

 

[그림5]

 

필자는 참조 관계일 때 부서 엔터티를 부모 엔터티라고 표현하지 않습니다. 그리고 사원 엔터티를 자식 엔터티라고도 표현하지 않습니다. 단순히 상위 엔터티, 하위 엔터티라고 표현하는데요. 부서 엔터티는 참조되는(Referenced) 상위 엔터티이고 사원 엔터티는 참조하는(Referencing) 하위 엔터티입니다.

 

엔터티 간에 종속 관계가 존재하면 부모 엔터티의 주 식별자를 자식 엔터티의 주 식별자로 상속합니다. 물론 [그림3]과 같이 전략적으로 부모 엔터티의 주 식별자를 자식 엔터티의 일반 속성으로 상속할 수도 있습니다.

 

하지만 참조 관계의 엔터티는 상위 엔터티의 주 식별자를 하위 엔터티의 주 식별자로 상속하지 않습니다. 일반 속성으로 상속하지 않고 주 식별자로 상속하는 것은 일반적으로 잘못된 모델입니다. 존재 종속Existence Dependency이 없음에도 주 식별자로 말미암아 존재 종속되기 때문에 주의해야 합니다.

 

종속 관계는 생각보다 많지 않습니다. 시스템 마다 틀릴 수 있지만 20% 정도가 종속 관계라고 느껴집니다. 몇 번 강조했듯이 두 엔터티의 관계가 종속 관계인지 참조 관계인지를 따지는 것은 상당히 의미 있는 작업입니다. 관계 도출의 시발점입니다.

 

 


'데이터 Story > 모델링 이론' 카테고리의 다른 글

관계 도출 시 핵심 요소  (0) 2011.02.16
관계선이 의미하는 것  (4) 2011.02.16
관계란?  (0) 2011.02.16
엔터티 도출 원칙 2  (0) 2011.02.16
엔터티 도출 원칙 1  (0) 2011.02.16