데이터 모델링을 통해서 데이터 베이스를 구축하기 위한 모델을 만드는 작업을 할 수 있다.
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 관계에서는 Entity가 하나가 Entity하나에 대해서만 연결될 수 있다. 쉽게 생각하면, 학생들 학번의 경우 학생 한 명당 한 개의 학번이 대응되는 것을 생각할 수 있다.
이때, 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 관계에서는 Entity가 하나가 다른 Entity의 여러 개와 연결될 수 있다. 예를 들어, 위의 ERM 모델의 예시와 같이 한식, 중식, 일식들 카테고리들 마다 메뉴들이 다양하게 들어갈 수 있는 것을 생각해 볼 수 있다.
다음과 같이, 1:N 관계를 맺기 위해서 N에 해당되는 Entity에 Foreign Key를 설정한다. 예시의 경우에는 Category_info의 idcategory와 Customer Entity의 category로 연결 지었는데, Customer에서 main_menu별로 (중식-중국냉면, 한식 - 한우 불고기, 중식 - 깐풍기 등) category가 분류되기 때문에 Cutomer Entity가 N으로 연결되고 category가 Foreign Key로 설정되었다.
- M:N 관계에서는 Entity와 다른 Entity의 여러 개가 서로 연결될 수 있는 것을 의미한다. 상품을 장바구니에 담는 것을 생각해보면, 한 고객이 여러 개의 상품을 장바구니에 담을 수 있고 동시에 하나의 상품도 여러 고객들의 장바구니에 담길 수 있는 관계를 가진다.
M:N 관계를 연결하려고 하면 자동으로 shopping_cs_has_product라는 Entity가 생성된다. 다수의 관계를 가지는 Entity들끼리는 두 개만 사용해서 직접 연결할 수 없다. 위의 예시와 같이 이들을 연결하기 위한 연결 테이블이 필요하다. 각 Entity별로 1:N 관계가 새로 성립되어 참조할 수 있는 관계가 된다고 볼 수 있다.
- Entity들의 관계를 보다 보면 세로로 두 줄이 그어져 있는 형태 혹은 다수를 나타내는 새 발 모양 앞에 선이 하나 더 있는 것을 볼 수 있었을 것이다. 대응 관계 이외에도 관계를 나타내는 표현들이 있다.
왼쪽 같은 도식으로 관계 차수와 관계 선택 사항을 표현해 주고 이들을 조합하면 오른쪽 직선(점선도 가능)들과 같이 다양한 경우의 관계를 설정하여 모델링할 수 있다.
'Database > MySQL' 카테고리의 다른 글
[Programming][MySQL] 뷰(View) 테이블 생성하기 (0) | 2021.08.22 |
---|---|
[Programming][MySQL] 데이터 정규화(제1 정규화, 제2 정규화, 제3 정규화, 비정규화) (0) | 2021.08.16 |
[Programming][MySQL] 외래키(Foreign Key) (0) | 2021.08.12 |
[Programming][MySQL] 테이블 가공하기(ALTER) (0) | 2021.08.04 |
[Programming][MySQL] 테이블 만들기(CREATE DATABASE/ CREATE TABLE/ INSERT INTO/ DELETE FROM) (0) | 2021.08.02 |
댓글