출처 - 생활코딩
https://www.youtube.com/watch?v=moAXl6fvDO0&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa&index=5
생활코딩 이고잉님의 강의를 토대로 정리했습니다.
전체 흐름
- 업무파악
- 개념적 모델링
- 어떠한 개념들이 있고, 각각의 개념들은 어떻게 상호작용하고 있는가
- 논리적 데이터 모델링
- 관계형 데이터베이스에 맞게 표를 잘 구성하는 것
- 물리적 데이터 모델링
- 어떤 데이터베이스 제품을 선택할지
- 그 데이터베이스 제품으로 실제 표를 만드는 것
업무 파악
- 일을 의뢰한 사람과 같이 만들어야 할 어플리케이션의 UI를 그려보면서 업무 파악을 확실히 할수 있다.
개념적 데이터 모델링
개념
- 파악한 업무에서 개념을 뽑아내는 과정
- 현실에서 개념을 추출하는 일종의 필터
- 이를 ERD(Entity RelationShip Diagram)으로 표현할 수 있다.
- ERD는 현실을 3개의 관점으로 바라볼 수 있게 한다.
- 정보
- 그룹 - 연관된 정보를 그룹화
- 관계 - 그룹 사이의 관계
- ERD는 매우 쉽게 표로 정규화할 수 있다.
- RDB는 주제에 따라서 데이터를 그룹화할 수 있다.
- 원하는 표만을 조회해서 컴퓨터의 자원을 아낄 수 있다.
- JOIN을 통해 테이블을 합성해 원하는 데이터를 다양하게 뽑아낼 수 있다.
- 정보를 입력하는 UI 가 원인이 되어서 DB의 데이터를 변경하는 결과를 낳는다.
- 또한 데이터라는 원인에 의해서 UI가 표시된다.
- DataBase 와 UI 는 서로 원인과 결과를 가진다.
Cardinality
Optionality
- 저자는 댓글을 작성하지 않을수도 있다. (Optional)
- 각 댓글은 반드시 저자가 존재한다. (Mandatory)
- 저자와 댓글은 1대N 관계이다.
논리적 데이터 모델링
뽑아낸 개념을 관계형 데이터베이스 패러다임에 맞게 잘 정리정돈하는 것
Mapping Rule
- Entity → Table
- Attribute → Column
- Relation → PK, FK
테이블 및 컬럼 생성, 관계 처리
-
1대1 관계 (저자, 휴면아이디)
저자는 꼭 휴면이 아닐 수 있다. (Optional)
휴면은 꼭 저자여야 한다. (Mandatory)
외래키는 휴면테이블의 author_id
로 지정한다.
-
1대N 관계 (저자, 댓글), (게시글, 댓글)
-
저자와 댓글은 1대N 관계이고, 댓글 테이블은 저자의 아이디를 외래키로 가진다.
-
게시글과 댓글은 1대N 관계이고, 댓글 테이블은 게시글의 아이디를 외래키로 가진다.
-
N대M 관계 (저자, 글)
-
애매하다
-
중재자가 필요함 (연결 테이블)
-
저자와 게시글을 연결하는 write 테이블을 생성
-
저자는 write를 안할 수 있으므로 (1) — (0,N) 관계
-
게시글은 write가 있어야지만 존재하므로 (1) — (1,N) 관계이다.