5. 논리적 데이터 모델링1
1) 논리적 데이터 모델링
- Mapping Rule : ERD를 통해서 표현한 내용을 관계형 데이터베이스에 맞는 형식으로 전환하느는 방법론
- Entity => Table
- Attribute => Column
- Relation => PK, FK
2) 테이블과 컬럼 생성
ER Master
ermaster.sourceforge.net
3) 1:1 관계의 처리
- Relation => PK, FK
- 저자 -l--o-l- 휴면자 - (휴면일)
- 부모 테이블 : 혼자서 있을 수 있음
- 자식 테이블 : 의존하는 테이블
4) 1:N 관계의 처리
5) N:M 관계의 처리
- 맵핑 테이블 ex) write 테이블
- 스키마 부분만 반영하면됨
- write (1, N) ------ (1) topic
6. 논리적 데이터 모델링 - 정규화
1) 정규화 소개
- 제 3정규형까지 많이 사용
- 제 1정규형 -> 제 2정규형 -> 제 3정규형
2) 제1 정규화
- 제 1정규화 원칙 : Atomic columns
- Atomic columns : 각각의 column이 값이 하나만 가짐
하나의 column에 값이 여러개인 경우
- SELECT * FROM topic WHERE tag=`free` => 사용 불가능
- SELECT * FROM topic ORDER BY tag => ,뒤에 내용으로 정렬 불가능
- JOIN 사용 불가능
=> 이러한 문제점이 해소된 상태 : 제 1정규형 상태
- 정보의 손실은 없지만 중복이 발생 => 제 1정규형 만족시키지만 바람직하지 않음
title | type | description | created | author_id | author_name | author_profile | price | tag |
MySQL | paper | MySQL is ... | 2011 | 1 | kim | developer | 10000 | rdb |
MySQL | paper | MySQL is ... | 2011 | 1 | kim | developer | 10000 | free |
- tag1, tag2 column 추가 => 낭비 발생
- 하나의 topic이 여러 개의 tag를 가질 수 있음
- 하나의 tag이 여러 개의 topic를 가질 수 있음
=> N대 M 관계 -> 매핑 테이블을 만들어야함
topic
title | type | description | created | author_id | author_name | author_profile | price |
MySQL | paper | MySQL is ... | 2011 | 1 | kim | developer | 10000 |
MySQL | online | MySQL is ... | 2011 | 1 | kim | developer | 0 |
ORACLE | online | ORACLE is ... | 2012 | 1 | kim | developer | 0 |
tag
id | name |
1 | rdb |
2 | free |
3 | commercial |
topic_tag_relation
topic_title | tag_id |
MySQL | 1 |
MySQL | 2 |
ORACLE | 1 |
ORACLE | 3 |
3) 제2 정규화
- 제2 정규화 원칙 : No partial dependencies
- No partial dependencies : 부분 종속성이 없어야됨(=표에서 중복키인 것이 없어야함)
title | type | description | created | author_id | author_name | author_profile | price |
MySQL | paper | MySQL is ... | 2011 | 1 | kim | developer | 10000 |
MySQL | online | MySQL is ... | 2011 | 1 | kim | developer | 0 |
ORACLE | online | ORACLE is ... | 2012 | 1 | kim | developer | 0 |
=>
title | description | created | author_id | author_name | author_profile |
MySQL | MySQL is ... | 2011 | 1 | kim | developer |
ORACLE | ORACLE is ... | 2012 | 1 | kim | developer |
topic type
title | type | price |
MySQL | paper | 10000 |
MySQL | online | 0 |
ORACLE | online | 0 |
4) 제3 정규화
- 제3 정규화 원칙 : No transitive dependencies
- No transitive dependencies : 이행적 종속성 없어야함
- author_id는 title에 의존하지만 author_name, author_profile은 author_id에 의존
=> 이행적 종속성
author | ||
id | author_name | author_profile |
1 | kim | developer |
author | ||
id | author_name | author_profile |
1 | kim | developer |
=> 제3 정규형 만족
'공부 > MySQL' 카테고리의 다른 글
관계형 데이터 모델링 (3) (0) | 2020.03.02 |
---|---|
관계형 데이터 모델링 (1) (0) | 2020.02.27 |
SQL join (0) | 2020.02.26 |
DATABASE2-MySQL(4) (0) | 2019.07.31 |
DATABASE2-MySQL(3) (0) | 2019.07.31 |