본문 바로가기

Programming Theory/Data Modeling

Data Modeling pattern

0) 관계 개괄

관계 

 설명

 M:M 관계

 2개의 entity 관계에서 각각의 entity의 record가 상대 entity의 여러 record 와 연결되는 관계

 recursive 관계

 1:M 관계가 반복적으로 나타나는 관계가 Recursive 관계

 Super-Sub 관계

 개별 entity로부터 공통 속성, 관계를 도출할 수 있는 관계

 BOM 관계

 2개의 entity의 속성이 같은 M:M 관계

 arc 관계

 하나의 자식 entity 에 대해 2개 이상의 부모 entity가 서로 배타적으로 존재하는 관계


1) M:M 관계

a. 발견

2개의 entity 관계에서 각각의 entity의 record가 상대 entity의 여러 record 와 연결되는 관계

ex) 주문와 제품 관계, 카테고리와 상품 관계


b. 논리 모델링

- RDB 에서는 속성이 atomic value (1개의 값)만 insert 하는 것이 기본

- 따라서 M:M 관계를 해당 table 인 2개 table로만 표현하는 것은 불가능

- 관계 entity로 해소 (2:M 관계의 경우, 관계 entity가 불필요할 수 있음)


c. erd 로 표시

ㄱ. M:M 관계

 - 본질식별자(기본 속성을 식별자로 사용)

 - 인조식별자(sequence를 식별자로 사용)

ㄴ. 2:M 관계 (ex. 1개의 주문에 2개의 제품만 포함될 수 있을 때)

- M:M 관계에서 한쪽의 개수가 고정되어 있을 때

2) Recursive 관계

a. 발견

1:M 관계가 반복적으로 나타나는 관계

ex) 조직도, 메뉴, 카테고리 


b. 논리 모델링

- '상위' + PK 를 속성으로 설정하고, 자신의 entity를 스스로 참조도록 한다. 

- 관계의 양쪽이 모두 optional : 최상위record 는 더 상위 record가 없고, 최하위record 는 최하위record를 상위record로 하는 record가 없다. (ex. 최상위조직의 경우 상위조직ID 가 null 이다.  최하위조직의 경우 해당 조직을 상위조직으로 하는 record가 없다.)


c. erd로 표시

** Recurcive 관계의 강력한 힘은 위와 같은 관계를 Recursive 관계가 아닌 관계로 표시했을 때, 관계의 변화에 얼마나 대처하기 힘든지를 보면 됨

ex) 조직을 Recursive 관계가 아닌 다른 관계로 표시했을 때

조직 개편으로 담당 조직이 없어지거나, 사업부와 담당 사이에 '랩' 이라는 조직이 추가됐다고 생각해보자. 엄청난 DB 전환의 압박이 느껴지지 않는가?


3) Super-Sub Type

a. 발견

개별 entity로부터 공통 속성, 관계를 도출할 수 있는 관계

ex) 접수, ARS


b. 논리 모델링

- 비슷한 성격의 entity로부터 공통 속성, 관계 도출한 후 아래 기준에 따라 Super, Sub로 분리

 구분 

 설명 

 Super

 공통 속성, 관계  

 Sub

 개별 속성, 관계

ex)

[접수]

 구분

 설명

 Super

 접수

 Sub

 인터넷접수, 방문접수, 전화접수 

[ARS]

 구분

 설명

 Super

 ARS

 Sub

 보는 ARS, 누르는 ARS, 상담사 연결 

 - Sub type을 분리할 수 있는 구분 컬럼 必

- 객체지향언어로 가정하면, Super 는 Super Class, Sub 는 Sub Class임


c. erd 작성


** 특성 : 업무 파악에 good, join이 너무 많은 것은 bad. 상황에 따라 Super, Sub로 구분하지 않고 하나의 table에 모든 속성을 두기도 함.


4) BOM 관계 (Bill of Material)

a. 발견

2개의 entity의 속성이 같은 M:M 관계

ex) 완성부품과 구성부품의 부품조립규칙, 개별아티스트와 그룹아티스트의 그룹구성규칙, 회원과 이웃회원의 이웃구성규칙


b. 논리 모델링

M;M 관계에서 2개의 속성이 같은 경우 BOM 관계로 작성한다.


c. erd 작성

[완성부품과 구성부품의 부품조립규칙]

- BOM 적용 전

- BOM 적용 후

[개별아티스트와 그룹아티스트의 그룹구성규칙]

- BOM 적용 전

- BOM 적용 후

[회원과 이웃회원의 이웃구성규칙]

- BOM 적용 전

- BOM 적용 후

5) ARC 관계 (배타관계)

a. 발견

하나의 자식 entity 에 대해 2개 이상의 부모 entity가 서로 배타적으로 존재하는 관계

(2개 이상의 부모 entity를 상황에 따라 Super-Sub class로 분류해도 됨)

- ex) 댓글, 계약


b. 논리 모델링

2개 이상의 부모 entity가 서로 배타적으로 존재하는 경우, 자식 entity를 부모 entity별로 만들지 않고, ARC 관계 활용해 1개로 만든다. 


c. erd 작성

[댓글]


[계약]

** arc 선을 부드럽게 erwin 에서 그리는 것은 불가능하다.






'Programming Theory > Data Modeling' 카테고리의 다른 글

논리 모델링  (0) 2016.07.21
Data Modeling 절차  (0) 2016.07.21
정규화  (0) 2016.07.20