우선 클라이언트와 데이터 모델링을 하기 위한 의사소통을 합니다. https://icon-icons.com/icon/meeting/176917
클라이언트와 이야기한 내용은 추상화시켜 개념적 모델링을 합니다. http://draw.io - DB개념설계
- 영화관에 오는 회원이 있겠구나~ 하고 엔터티를 만들고, 회원의 속성은 어떤 것들이 있을까 생각을 해봅니다. - 영화관련도 있겠구나~하고 엔터티를 만들고, 영화에는 어떤 속성이 필요한지 적어봅니다. - 이런 식으로 추상화시켜 나가는 것을 개념적 모델링이라고 합니다.
개념적 모델링을 논리적 모델링으로 변화하는 작업을 합니다. https://www.erdcloud.com/ 를 이용한 논리적 설계
- 개념적 모델링에서는 추상화를 시켰다고 한다면, 논리적 모델링에서는 좀 더 구체적으로 만듭니다. - 각각의 엔터티에 식별자(기본키)를 도출하고, 필요한 모든 관계(릴레이션)를 정의합니다. - 특히, 데이터들을 다 분리하는 정규화를 수행해서 데이터 모델의 독립성도 확보합니다. - 정규화라는 것은 영화에 모든 정보를 다 담으면 복잡해지니까, 영화파일, 장르, 연령, 제작 등등 엔터티로 분리해서 관계를 설정해 주는 것입니다.
논리적 모델링한 것을 실제 데이터베이스로 구축하는 물리적 설계를 합니다. MySQL Workbanch를 통해 물리적 데이터베이스 설계
- 설계한 것을 실제 데이터베이스로 만들었습니다.
- ERD는 1976년에 피터첸이 표기법을 만들었으며, 사실상 데이터 모델링의 표준으로 사용되고 있습니다.
- 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법입니다.
- 위에서 예시로 들었던 영화관 DB설계로 간단하게 설명을 해보겠습니다.
1) ERD 작성 절차
① 엔터티를 도출하고 그립니다. 영화관에서 관리하는 집합을 도출합니다.
② 엔터티를 배치합니다.
- 엔터티를 도출한 후 엔터티를 배치합니다.
- 중요한 엔터티를 왼쪽 상단에 배치합니다.
③ 엔터티 간의 관계를 설정합니다.
그림에서 보이는 것과 같이 선을 연결해서 관계 설정
④ 관계명을 서술합니다. 엔터티간의 어떤 행위나 존재가 있는지 표현합니다.
엔터티 사이에 관계명을 기술
⑤ 관계참여도를 표현합니다.
- 관계참여도는 한개의 엔터티와 다른 엔터티 간의 참여하는 관계 수를 의미합니다.
- 즉, "회원은 여러 장을 예매할 수 있다"와 같은 의미를 표현하는 것입니다.
⑥ 관계의 필수 여부를 표현합니다.
- 필수는 반드시 존재해야 하는 것입니다.
- 예를 들어 "모든 회원은 반드시 하나의 예매를 해야 한다"와 같은 의미를 표현합니다.
관계의 필수여부를 표현
2) ERD 작성시 고려사항
- 중요한 엔터티를 가급적 왼쪽 상단에 배치한다.
- ERD는 이해가 쉬워야 하고, 너무 복잡하지 않아야 한다.
## 이론 문제 확인하기
ERD 작성 절차로 올바르게 연결된 것은?
============================================
A : 엔터티를 도출하고 그린다.
B : 엔터티를 배치한다.
C : 엔터티 간 관계를 설정한다.
D : 관계명을 서술한다.
E : 관계 참여도를 표현한다.
F : 관계의 필수 여부를 표현한다.
============================================
1. A → B → C → D → E → F
2. A → B → C → F → E → D
3. A → B → C → D → F → E
4. B → A → C → D → E → F