[MySQL] 관계형 데이터 모델링 2 (논리적 모델링) - 1:1, 1:N, N:M 관계 맵핑하기
수련: https://github.com/egoingsb/offline/wiki/database---mysql
egoingsb/offline
Contribute to egoingsb/offline development by creating an account on GitHub.
github.com
강의: https://opentutorials.org/module/4134/25279
논리적 데이터 모델링 1 - 관계형 데이터 모델링
수업소개 ER diagram을 관계형 데이터베이스 모델에 어울리게 변환하는 과정을 다루고 있는 수업입니다. 여기서는 Mapping rule을 중점적으로 공부합니다. 강의1 강의2 강의3 강의4 강의5 강의6
opentutorials.org
이클립스에서 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로 지정하면 된다
저자는 글을 작성 안 할 수도 있으니 옵션
작성했다면 저자는 반드시 있어야 되니 필수
결과: