본문 바로가기
DATABASE/MySQL

[MySQL] 관계형 데이터 모델링 2 (논리적 모델링) - 1:1, 1:N, N:M 관계 맵핑하기

by sjs_2215 2019. 8. 26.

수련: 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 관계의 처리] 댓글과 글, 저자와 댓글

 

  1. comment에 "댓글이 작성된 글의 아이디와 댓글을 쓴 저자의 아이디" 칼람을 추가한다.

칼람을 추가한 comment의 테이블. 추가한 칼람은 당연히 fk로 채택

 

 

 

topic에게 코멘트는 option

코멘트에게 topic은 필수

 

&

 

저자에게 코멘트는 option

코멘트에게 저자는 필수

 

 

 


 

2-3. [N : M 관계의 처리] 저자와 글

 

  1. 먼저 topic에 author 정보를 적는다.

author_id 칼람을 추가해서 표를 만들어 보자.

 

문제점 -> 한 항목에 값이 여러 개가 들어가는 문제점 발생

 

  1. author에 topic 정보를 적어본다

topic_id 칼람을 추가해서 표를 만들어 본다.

 

 

 

문제점 -> 한 항목에 값이 여러 개가 들어가는 문제점 발생

 

해결책- 중재자 역할의 mapping table이 필요함

 

Mapping table

 

각각의 글은 누가 썼고, 그 저자는 누군지 알 수 있는 매핑 테이블을 만들자

write 테이블:

 

 

n:m 관계 -> 매핑 테이블이 있겠구나!

 

매핑 테이블의 __author_id, topic_id를 pk이자 fk로 지정하면 된다

 

저자는 글을 작성 안 할 수도 있으니 옵션

작성했다면 저자는 반드시 있어야 되니 필수

 

결과:

 

 

Comments