1) 데이터 모델링의 순서
업무파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링
2) 업무파악
기획서
https://ovenapp.io/view/EuTjedDvHdhBQLoxthGrqvBlGp1jBJj6/XDCP1
ovenapp
3) 개념적 데이터 모델링
(1) 개념적 데이터 모델링 소개
- 파악한 업무에서 개념을 뽑아내는 과정
- 현실에서 개념을 추출하는 일종의 필터 제공
- 개념에 대해 다른 사람과 소통할 수 있는 언어
=> 이 목적을 이루게 해주는 도구 : Entity Relationship Diagram
- 3개의 관점 : 정보, 그룹, 관계
- eid는 매우 쉽게 표로 전환 가능
(2) 관계형 데이터베이스 다운 개념의 구조
- RDB는 내포관계를 허용하지 않음
(3) ERD의 구성요소
-글 : 본문, 제목, 생성일 (글의 속성) -> 표의 column
- 작가 - (쓰다) - 글 - (소속) - 댓글 - (쓰다) - 저자 => Relation (PK[기본키], FK[외래키] JOIN)
- Entity => Table
- Attribute => Column
- Relation => PK, FK
- Tuple => Row
(4) 엔티티 정의
- UI ~ Database (원인과 결과 관계)
- 가장 먼저 할 일 : 기획서에서 엔티티 찾아내기
- 연관된 데이터 그룹핑
- 엔티티 : 글, 댓글
(5) 속성 정의
- 저자는 속성이라기 보다 관계를 통해서
- ERD에서 속성은 원을 사용
- 저자 엔티티에 추가
- 글의 속성 : 제목, 작성일, 본문
- 같은 엔티티의 속성이라는 것을 알리기 위해 선으로 연결
- [글] - (제목, 작성일, 본문)
- 저자의 속성 : 이름, 자기소개, 가입일
- [저자] - (이름, 자기소개, 가입일)
- 댓글의 속성 : 작성일, 본문
- [댓글] - (작성일, 본문)
(6) 식별자 지정
- 식별자 : 원하는 대상을 정확하게 타겟팅, 행(튜플)을 식별
- 식별자는 그 대상을 제외한 누구도 같은 값을 가지면 안됨
- 식별자 => 기본키(PK)
- 후보키(candidate) : 식별자가 될 수 있는 키
- 후보키 = 기본키 + 대체키(alternate key)들
- 중복키 : 두 개의 키을 통해 식별
- 글 : 식별자가 될 수 있는 속성이 없음 => 대리키(인조키) 만듬 -> 글 아이디 속성 추가
식별자
- 댓글 : 식별자가 될 수 있는 속성 없음 => 댓글 아이디 속성 추가
- 저자 : 저자 아이디 속성 추가
(7) 엔티티간의 연결
- 외래키 : 외래에 있는 테이블과 연결할 때 쓰는 키 ex) 저자 아이디
- 관계는 마름모로 표현
- 관계 : 작성, 소속
- [글] - <작성> - [저자] - <작성> - [댓글] - <소속> - [글]
(8) Cardinality
- 기수
- 각 선생님은 한 반(1)만 담임한다 - 각 반의 담임(1)은 한명이다 (일대일 관계) [ ]--[ ]
- 각 저자는 여러 글(N)을 작성한다 < 각 댓글은 하나의 저자(1)만 존재 (일대다 관계) [ ]--<-[ ]
- 각 저자는 여러 글을 작성한다 >< 각 글은 여러 저자(N)가 존재 (다대다 관계) [ ]->--<-[ ]
(9) Optionality
- 저자와 댓글 관계
- 저자는 댓글을 작성하지 않을 수도 있다(=저자에게 댓글은 Optional) [ ]---o-[ ]
- 각 댓글은 반드시 저자가 있다(=댓글에게 저자는 Mandatory) [ ]-l--o-[ ]
- 저자와 댓글은 1대 N관계 [ ]-l--0<-[ ]
(10) ERD 완성
- 엔티티와 관계의 관계
(11) Entity Relationship Diagram Helper
erd.yah.ac
'공부 > MySQL' 카테고리의 다른 글
관계형 데이터 모델링 (3) (0) | 2020.03.02 |
---|---|
관계형 데이터 모델링 (2) (0) | 2020.03.02 |
SQL join (0) | 2020.02.26 |
DATABASE2-MySQL(4) (0) | 2019.07.31 |
DATABASE2-MySQL(3) (0) | 2019.07.31 |