-
데이터 모델링23- 엔티티 모델링의 어려움을 극복할 방법론과 전략2Data Base/관계형 데이터 모델링 2023. 9. 26. 15:04
서브타입과 E-R패턴 1
서브타입을 중심으로 집합을 나누거나 묶어보며 E-R패턴(E와 R은 엔티티와 엔티티들 사이의 관계(Relationship)로, ERD에서의 그것과 동일하다.)이라는 5가지 데이터 모델 유형을 확인해보려 한다.
그림 11-5 RDB이론에서의 속성, 튜플, 관계(Relation)
RDB에서의 'R'은 Relationship이 아닌 Relation의 R이다. Relation은 1970 코드(E.F Codd)박사가 발표한 "A Relational Model of Data for Large Shared Data Banks"라는 논문에서 소개한 주제로 '데이터를 2차원 표 구조로 표현하고 관리한다'고 말할 때의 "표"에 해당하는 개념이다. 종종 관계형 데이터베이스를 잘못해석하는 것을 목격할 수 있는데, 관계형 데이터베이스라고 하면 통상 기본 키-외래 키의 참조 관계를 연상하기 때문일 것이다. 즉 엔티티와 엔티티간의 관계를 생각하는 것이다. 이것은 Relationship에 해당하는 개념이다. 하지만 코드 박사가 정의한 Relation은 데이터 집합으로서 2차원 표 구조를 말하는 것으로 "표"자체를 의미하는 것이다. 이 둘은 명확히 서로 다른 개념이다.
RDB 이론에서 [그림 11-5]와 같이 속성의 집합을 튜플(tuple)이라 하고, 튜플의 집합을 관계(relation)이라고 정의한다. 즉, RDB는 relation의 집합으로 구성되기 때문에 RDB라는 이름을 갖게된다.
이제부터 데이터 집합을 값의 범주 기준으로 나누어 보자. 먼저 집합의 베타적 분류부터 시작해보자. 직원의 직급은 부장, 과장, 사원의 3가지 유형만 존재한다고 가정한다. 논리적으로 직원이 부장이면서 과장이거나, 과장이면서 사원인 경우는 존재할 수 없다. 그러므로 값의 범위는 *배타적으로 정의할 수 있다. 이를 서브타입과 E-R 패턴으로 표현하면 [그림 11-6]과 같다.
* 배타적 - 다른 것을 제외하고 독점적인 조건에서만 성립하는 것
그림 11-6 E-R 패턴 #1 - 집합의 배타적 나눔
예) 직원의 직급, 고객의 유형
그림에서 알 수 있듯 직원의 직급과 같이 코드 형태로 표현되는 속성은 서브타이다. 통상 엔티티의 속성 중에는 코드 속성이 30% 이상이다. 이것은 하나의 집합을 보는 관점이 그만큼 다양할 수 있음을 의미한다. 그 관점은 분류 기준이 되고, 자연히 그로 인한 부분 집합이 존재한게 된다. 그림의 <Basis>집합에는 A,B,C의 3가지 배타적인 유형 속성이 존재하면, 이를 기준으로 집합을 지어 나눌 수 있다. 이를 모델로 표현하면 유형이 기준이 되어 별도로 분리된다. 다시 말해 유형이 디멘션(차원)처럼 상위 집합으로 올라가며, Basis는 이 유형에 의해 구분되는 하위 집합이 된다. 이것이 E-R패턴의 첫 번째 유형으로, 값의 범위에 대한 집합의 배타적(exclusive)나눔이라고 정의하자.
집합의 배타적 나눔과 관련되 사례를 더 살펴보자. 예를들어 앞의 직브 구분에서 부장을 보직 간부와 비보직 간부로 다시 나눌 수 있다면 어떤 구조를 고려해야 할까? 이런 경우 [그림 11-7]과 같이 잘못 표현하는 사례를 의외로 자주 볼 수 있다.
그림 11-7 보직 간부와 비보직 간부를 잘못 표현한 예
[그림 11-7]은 직급과 보직이라는 서로 완전히 다른 차원의 만남을 그린 것이다. 직급 유형인 <부장>,<과장>,<사원>은 동일 차원에 존재하며 서로 배타적이다. 그러나 직급과 보직은 서로 다른 차원이기 때문에 중복될 수 있다. 모델만 본다면 <부장>이면서 <비보직간부>이거나 <과장>이면서 <보직간부>인 사람이 존재할 수 있다는 것이기 때문이다. 따라서 이 모델은 업무를 잘못 표현한 것이다. 만약 부장 직급에 종속된 개념으로 보직과 비보직을 나누는 의미라면 반드시[그림 11-8]처럼 그려야 한다.
그림 11-8 보직 간부와 비보직 간부를 올바르게 표현한 예
다른 차원이라는것을 예를 들어 설명하자면 예를 들어 성별과 결혼 여부는 서로 다른 차원이니 남자이면서 기혼인 경우는 당연히 존재할 수있다. 같은 맥락으로 [그림 11-7]에서 <사원> 서브타입과 <보직간부> 서브타입이 배타적이 아니라서 잘못된 모델이 되는 것이다. 요약하면 데이터 모델링에서 말하는 배타성은 같은 차원에서만 이루어지면, 서로 다른 차원이면 배타성을 유지할 수 없게 된다.
[출처 - 프로젝트의 성패를 결정짓는 데이터 모델링 이야기 , 김상래 저]
'Data Base > 관계형 데이터 모델링' 카테고리의 다른 글
데이터 모델링24 - 엔티티 모델링의 어려움을 극복할 방법론과 전략3 (0) 2023.09.26 데이터 모델링24 - 엔티티 모델링의 어려움을 극복할 방법론과 전략3 (0) 2023.09.26 데이터 모델링22- 엔티티 모델링의 어려움을 극복할 방법론과 전략1 (0) 2023.09.25 데이터 모델링21 - Account, 개체 그룹핑 모델링 이해 2 (0) 2023.09.25 데이터 모델링20 - Account, 개체 그룹핑 모델링 이해 (0) 2023.09.25