완전 함수 종속
- 종속자가 기본키에만 종속되는 것을 말하며 기본키가 2개 이상일 경우 기본키의 부분집합에 종속된 경우
회원번호 | 이름 | 나이 | 거주지역 |
---|---|---|---|
001 | 강아라 | 25 | 서울 |
002 | 민경훈 | 23 | 부천 |
003 | 백승기 | 28 | 부산 |
모든 값은 기본키인 회원번호에 종속되어 있으며 이것이 완전 함수 종속
회원번호 → 이름
회원번호 → 나이
회원번호 → 거주지역
First Normal Form
도메인이 원자값
원자값 : 더이상 쪼갤 수 없는 하나의 값
컬럼의 값은 하나의 값만 가져야함
Tag 컬럼을 원자값으로 만들기 위해 분리
Title | Type | Description | Created | Author_id | Author_name | Job | Price |
---|---|---|---|---|---|---|---|
MySQL | Paper | Mysql is ... | 2022 | 1 | Lee | Developer | 10000 |
MySQL | Online | Mysql is .... | 2022 | 1 | Lee | Developer | 0 |
Oracle | Paper | Oracle is ... | 2022 | 1 | Lee | Developer | 15000 |
topic_title | tag_id |
---|---|
MySQL | 1 |
MySQL | 2 |
Oracle | 1 |
Oracle | 3 |
id | name |
---|---|
1 | rdb |
2 | free |
3 | commercial |
4 | Nosql |
5 | semi-free |
부분적 함수 종속 제거
부분적 함수 종속
기본키가 아닌 Type 컬럼으로 인해 Price가 결정되고 있음
부분함수 종속 제거
고객ID | 제품코드 |
---|---|
AAAA01 | T001 |
AAAA01 | B110 |
AAAA02 | B110 |
AAAA02 | T091 |
AAAA03 | O100 |
제품코드 | 주문상품 | 수량 | 가격 |
---|---|---|---|
T001 | 티셔츠 | 2 | 12000 |
B110 | 청바지 | 1 | 11000 |
B110 | 청바지 | 2 | 22000 |
T091 | 와이셔츠 | 1 | 15000 |
O100 | 원피스 | 1 | 19000 |
이행적 함수 종속 제거
A → B, B → C 이면 A → C 가 성립되면 그것이 이행적 함수 종속이라 함
기본키에 의해 결정되어야 하는데 JOB은 Author_id와 Author_name에 의해 결정
title | Description | Created | Author_id |
---|---|---|---|
Mysql | Mysql is .... | 2022 | 1 |
Oracle | Oracle is ... | 2022 | 1 |
Author_id | Author_name | Job |
---|---|---|
1 | Lee | Developer |
2 | Park | Professor |
회원번호 | 이름 | 나이 | 거주지역 |
---|---|---|---|
A001 | 송민지 | 17 | 서울 |
A002 | 박아람 | 15 | 부산 |
A003 | 이예은 | 16 | 대전 |
연습 테이블
학번 | 과목번호 | 학점 | 학생이름 |
---|---|---|---|
a001 | sub1, sub02, sub03 | A, B+, A+ | 홍길동 |
제 1 정규화
학번 | 과목번호 | 학점 | 학생이름 |
---|---|---|---|
a001 | sub01 | A | 홍길동 |
a001 | sub02 | B+ | 홍길동 |
a001 | sub03 | A+ | 홍길동 |
제 2 정규화
학번 | 과목번호 | 학점 |
---|---|---|
a001 | sub01 | A |
a001 | sub02 | B+ |
a001 | sub03 | A+ |
a002 | sub04 | C |
a003 | sub05 | F |
a004 | sub06 | D |
학번 | 학과 | 등록금 |
---|---|---|
a001 | 컴공 | 400 |
a002 | 경영학과 | 350 |
a003 | 기계공학과 | 500 |
a004 | 체육학과 | 600 |
제 3 정규화
학번 | 학과 |
---|---|
a001 | 컴공 |
a002 | 경영학과 |
a003 | 기계공학과 |
a004 | 체육학과 |
학번 | 등록금 |
---|---|
a001 | 400 |
a002 | 350 |
a003 | 500 |
a004 | 600 |