수련: https://github.com/egoingsb/offline/wiki/database---mysql
강의: https://opentutorials.org/module/4134/25279
이클립스에서 plug-in으로 논리저 데이터 모델링 하기: ermaster.sourceforge.net ER Master
관계형 데이터 모델링 2 (논리적 데이터 모델링)
Mapping Rule
= er diagram으로 표현한 것을 관계형 데이터베이스에 맞는 형식으로 전환할 때 사용할 수 있는 방법론
아래 그림과 같이 전환하면 됨
1. Entity와 Attribute를 테이블과 칼럼으로 맵핑하기
2. Relationship을 PK와 FK로 맵핑하기
가장 중요한 것: Cardinality
1 대 1 관계를 추가하기 위해 휴먼자 entity를 추가함.
수정한 er diagram
2-1. [1 : 1 관계의 처리] 저자와 휴먼 저자와 사이에 누구에게 pk, fk를 줘야 하는가?
누가 누구에게 종속되어 있나 생각해보자
ex.
저자는 휴먼 저자와 상관없이 값을 추가할 수 있다 (O)
휴먼 저자는 존재하는 저자로만 값을 추가할 수 있다 (O) = 휴먼 저자는 저자에게 의존할 수 있다.
휴먼 저자는 저자와 상관없이 값을 추가할 수 있다 (X)
의존하는 테이블 = 자식 테이블 - fk 지정 - author_id에게 fk를 줌
의존 안 해도 되는 테이블 = 부모 테이블 - pk 지정
author에게 dormant는 없을 수도 있음 - optional
dormant에게 author는 반드시 있어야 함 - 필수
2-2. [1 : N 관계의 처리] 댓글과 글, 저자와 댓글
- comment에 "댓글이 작성된 글의 아이디와 댓글을 쓴 저자의 아이디" 칼람을 추가한다.
칼람을 추가한 comment의 테이블. 추가한 칼람은 당연히 fk로 채택
topic에게 코멘트는 option
코멘트에게 topic은 필수
&
저자에게 코멘트는 option
코멘트에게 저자는 필수
2-3. [N : M 관계의 처리] 저자와 글
- 먼저 topic에 author 정보를 적는다.
author_id 칼람을 추가해서 표를 만들어 보자.
문제점 -> 한 항목에 값이 여러 개가 들어가는 문제점 발생
- author에 topic 정보를 적어본다
topic_id 칼람을 추가해서 표를 만들어 본다.
문제점 -> 한 항목에 값이 여러 개가 들어가는 문제점 발생
해결책- 중재자 역할의 mapping table이 필요함
Mapping table
각각의 글은 누가 썼고, 그 저자는 누군지 알 수 있는 매핑 테이블을 만들자
write 테이블:
n:m 관계 -> 매핑 테이블이 있겠구나!
매핑 테이블의 __author_id, topic_id를 pk이자 fk로 지정하면 된다
저자는 글을 작성 안 할 수도 있으니 옵션
작성했다면 저자는 반드시 있어야 되니 필수
결과:
'DATABASE > MySQL' 카테고리의 다른 글
[MySQL] 관계형 데이터 모델링 2 (논리적 모델링) - 정규화 (0) | 2019.08.29 |
---|---|
[MySQL] 관계형 데이터 모델링 3 (물리적 모델링) - 역정규화, 분석, 성능 개선 하는 법 (0) | 2019.08.28 |
[MySQL] 관계형 데이터 모델링 1 (개념적 모델링) - join과 entity relationship diagram (0) | 2019.08.25 |
[MySQL] 관계형 데이터베이스의 응용 - client와 server, php 실습코드 (0) | 2019.08.25 |
[MySQL] 관계형 데이터베이스 소개와 기본 사용법: MySQL의 생성, 읽기, 수정, 삭제 (0) | 2019.08.21 |
Comments