본문 바로가기
Database/MySQL

[Programming][MySQL] 데이터 모델링(ERM/ ERD)

by LydiaRyu 2021. 8. 13.
반응형

 

데이터 모델링을 통해서 데이터 베이스를 구축하기 위한 모델을 만드는 작업을 할 수 있다.

 

ERM은 Entity Relationship Modeling(개체 - 관계 모델링)으로 entity들 간의 관계로 표현하는 모델을 만드는 것을 의미한다.

ERD는 Entity Relationship Diagram(개체 - 관계 다이어그램)으로 ERM로 만든 모델링 모델을 그림으로 표현한 것을 말한다. 

 

 

  • Entity(개체): 저장하고 관리하려고 하는 데이터 값들을 나타는 것으로 테이블과 비슷한 개념으로 생각할 수 있다.(동일한 개념은 아니다!)
  • Attribute(속성): 테이블에서 열(Column)과 비슷한 개념으로, 위의 customer Entity에서는 id, category, main_menu... 이 attribute(속성)이다.
  • Relationship(관계): Entity들 간의 관계를 나타는 것으로 1:1, 1:N, M:N, 실선, 점선 등으로 나타낼 수 있다.

→ 데이터 베이스에서 중복과 NULL 값을 없애고, 원하는 정보가 담긴 데이터를 빠르고 정확하게 찾기 위해서 모델링은 필수이다.

 

  • Cardinality(관계 차수)

Cardinality(카디널 리티)는 Entity들 간에 관계를 맺을 때, 하나의 개체에 몇 개의 개체가 대응되는지를 나타내는 것이다. 

 

1:1 관계 도식

 

  • 1:1 관계에서는 Entity가 하나가 Entity하나에 대해서만 연결될 수 있다. 쉽게 생각하면, 학생들 학번의 경우 학생 한 명당 한 개의 학번이 대응되는 것을 생각할 수 있다. 

1:1 관계 모델링

이때, Entity 둘 중 하나의 Entity에 Foreign Key를 설정하거나, 둘 다에 설정하여 모델링할 수 있다. 예시에서는 학번과 학생과 1:1 관계를 연결한 것이기 때문에 모든 요소들이 NULL 값이 없이 연결된다. 따라서, Student Entity에 idcode(학번)을 넣어 code_idcode로 Foreign Key를 설정하여 관계를 맺었다.

 

→ 이 경우, 학생과 학번이 NULL 값 없이 모두 대응되기 때문에 어느 Entity에 Foreign  Key를 설정해도 상관없고 둘 다 설정할 수 있다. 그러나, 경품 추첨과 같이 상품과 사람 간의 1:1대 응이지만 못 받는 사람이 존재한다고 했을 때(경품이 모두 달라서 대응된다고 가정) 당청자 Entity에 Foreign Key를 설정하면 NULL 값이 발생하므로, NULL이 생기지 않도록 반드시 사용되는 값을 가지는 경품 Entity에 Foreign Key를 설정해야 한다.

 

1:N 관계 도식

 

  • 1:N 관계에서는 Entity가 하나가 다른 Entity의 여러 개와 연결될 수 있다. 예를 들어, 위의 ERM 모델의 예시와 같이 한식, 중식, 일식들 카테고리들 마다 메뉴들이 다양하게 들어갈 수 있는 것을 생각해 볼 수 있다.

 

 1:N 관계모델링

 

다음과 같이, 1:N 관계를 맺기 위해서 N에 해당되는 Entity에 Foreign Key를 설정한다. 예시의 경우에는 Category_info의 idcategory와 Customer Entity의 category로 연결 지었는데, Customer에서 main_menu별로 (중식-중국냉면, 한식 - 한우 불고기, 중식 - 깐풍기 등) category가 분류되기 때문에 Cutomer Entity가  N으로 연결되고 category가 Foreign Key로 설정되었다.

M:N 관계 도식

 

  • M:N 관계에서는 Entity와 다른 Entity의 여러 개가 서로 연결될 수 있는 것을 의미한다. 상품을 장바구니에 담는 것을 생각해보면, 한 고객이 여러 개의 상품을 장바구니에 담을 수 있고 동시에 하나의 상품도 여러 고객들의 장바구니에 담길 수 있는 관계를 가진다. 

 

M:N 관계 모델링

 

M:N 관계를 연결하려고 하면 자동으로 shopping_cs_has_product라는 Entity가 생성된다. 다수의 관계를 가지는 Entity들끼리는 두 개만 사용해서 직접 연결할 수 없다. 위의 예시와 같이 이들을 연결하기 위한 연결 테이블이 필요하다. 각 Entity별로 1:N 관계가 새로 성립되어 참조할 수 있는 관계가 된다고 볼 수 있다.

 

 

  • Entity들의 관계를 보다 보면 세로로 두 줄이 그어져 있는 형태 혹은 다수를 나타내는 새 발 모양 앞에 선이 하나 더 있는 것을 볼 수 있었을 것이다. 대응 관계 이외에도 관계를 나타내는 표현들이 있다. 

관계 차수 및 관계 선택 사항 도식

왼쪽 같은 도식으로 관계 차수와 관계 선택 사항을 표현해 주고 이들을 조합하면 오른쪽 직선(점선도 가능)들과 같이 다양한 경우의 관계를 설정하여 모델링할 수 있다. 

728x90

댓글