SlideShare a Scribd company logo
1 of 35
Download to read offline
데이터베이스 개론 정규화 
NHN NEXT 정호영 
나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
GOAL 
-1 정규형의 정의를 안다. 
-2 정규형의 정의를 안다. 
-3 정규형의 정의를 안다. 
-BCNF의 정의를 안다. 
-주어진 스키마가 어떤 정규형을 만족하는지 판단할 수 있다.
데이터베이스 설계 다시보기 
데이터베이스 설계 
= 테이블을 만드는 과정 
테이블을 만드는 과정 
= 애트리뷰트를 어떻게 묶을 것인지를 결정 
좋은 테이블을 설계 
= 애트리뷰트를 잘 묶는 방법
잘 설계된 테이블 
다른 테이블의 애트리뷰트 값을 읽어오는 것은 
외래키의 참조를 통해서만 가능해야 한다.
잘못된 설계 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
DNAME 
DMGRSSN 
EMP_DEPT 
SSN 
PNUMBER 
HOURS 
ENAME 
PNAME 
PLOCATIONS 
EMP_PROJ 
fd1 
fd2 
fd3
잘못된 설계의 문제점 
데이터의 중복 발생 
이상현상(anormaly) 발생 
이상현상 
- 삽입이상/ 삭제이상 / 갱신이상
삽입 이상 
새로운 부서를 신설하고 싶습니다. 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
DNAME 
DMGRSSN 
EMP_DEPT
삭제 이상 
마지막 사원이 나갔습니다. 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
DNAME 
DMGRSSN 
EMP_DEPT
갱신 이상 
개발팀의 이름이 dev팀으로 바뀌었습니다. 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
DNAME 
DMGRSSN 
EMP_DEPT
정규형 (Normal Form) 
이상현상이 잘 안 생기는 좋은 테이블이 갖추어야 할 조건 
-1, 2, 3 정규형 
-BCNF
정규화 (Nomalization) 
-테이블이 정규형을 만족할 수 있도록 잘 분해하는 과정 
-1정규화  테이블이 1 정규형을 만족하게 됨 
-3정규화  테이블이 3 정규형을 만족하게 됨
함수적 종속성 
두 애트리뷰트 X,Y에서 
X가 Y를 함수적으로 결정 
X  Y
함수적 종속성 
두 애트리뷰트 X,Y에서 
X의 값이 유일한 Y값을 결정 
X  Y
함수적 종속성 
두 애트리뷰트 X,Y에서 
Y는 X에 함수적으로 종속 
X  Y
* 진짜 함수 
Y = X * X : 함수 
X가 Y를 함수적으로 결정한다. 
Y가 달라지면 X값은 반드시 달라진다. 
cf.) X가 달라져도 Y는 같을 수 있다. 
X  Y 
X 
0 
1 
-1 
2 
-2 
… 
Y 
0 
1 
1 
4 
4 
…
함수적 종속성 예시 
1.주민번호  이름 
2.부서 ID  부장이름 
3.이름  직속상관 
이 중에 틀린 것은?
key 다시보기 
슈퍼키(super key) 
-애트리뷰트의 집합 
-고유하게 식별됨 
예) 
- [사번, 부양가족이름] 
- [주민번호 앞자리, 주민번호 뒷자리, 이름] 
- [사번,이름, 성별, 나이, 부서, 집전화, … ]
key 다시보기 
후보키 (candidate key) 
-슈퍼키의 부분집합 
-구성 애트리뷰트중 하나라도 제거하면 슈퍼 키가 아닌 것 
앞 장의 예제에서 후보키가 있나요? 
- [사번, 부양가족이름] 
- [주민번호 앞자리, 주민번호 뒷자리, 이름] 
- [사번,이름, 성별, 나이, 부서, 집전화, … ]
key 다시보기 
기본 키 (primary key) 
- 여러 후보키 중 대표적인 키 하나가 테이블의 기본 키가 됨
함수적 종속성과 후보키(candidate key) 
모든 다른 애트리뷰트을 함수적으로 결정하는 애트리뷰트 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
EMP_DEPT
제 1 정규형 
- 테이블은 반드시 하나 이상의 키를 가지고 있어야 한다. 
- 애트리뷰트의 도메인이 오직 원자값만을 포함한다.
제 1 정규형 
다음과 같은 속성은 허용하지 않는다. 
- 복합 애트리뷰트 
- 다중 애트리뷰트 
- 중첩 릴레이션
제 1 정규형 이것만 기억하자. 
기본키가 있고 애트리뷰트가 원자값을 가지면 제 1 정규형
진짜 제 1 정규형의 정의 
http://ko.Wikipedia.org/wiki/제1정규형 
(1)열에는 위-아래의 순서가 없다. 
(2)행에는 좌-우의 순서가 없다. 
(3)중복되는 열이 없다. 
(4)열과 행의 교차점에는 반드시 하나의 값이 존재해야 한다.
완전 함수적 종속과 제 2 정규형 
*완전 함수적 종속 
ABC  X라고 할 때 ABC중 하나라도 제거하면 함수적 종속이 발생하지 않는 경우
완전 함수적 종속과 제 2 정규형 
*부분 함수적 종속 
완전함수적 종속이 아닌 경우 부분 함수적 종속이라고 함 
예) 
ABC  D 
BC  D
제 2 정규형 
-1정규형을 만족하고 
-후보 키가 아닌 애트리뷰트들이 후보 키에 대해 완전 함수적 종속인 경우
제 2 정규형 
후보 키는? (SSN, PNUMBER) 
SSN 
PNUMBER 
HOURS 
ENAME 
PNAME 
PLOCATIONS 
EMP_PROJ 
fd1 
fd2 
fd3
제 2 정규형 
부분 함수적 종속이 발생하므로 2 정규형이 아님 
SSN 
PNUMBER 
HOURS 
ENAME 
PNAME 
PLOCATIONS 
EMP_PROJ 
fd1 
fd2 
fd3 
완전 함수적 종속성 
부분 함수적 종속성 
부분 함수적 종속성
제 2 정규형 
고쳐 봅시다! 
SSN 
PNUMBER 
HOURS 
ENAME 
PNAME 
PLOCATIONS 
EMP_PROJ 
fd1 
fd2 
fd3 
완전 함수적 종속성 
부분 함수적 종속성 
부분 함수적 종속성
이행 종속과 제 3 정규형 
*이행 종속 
X  Y 이고 Y  Z 이면 X  Z
제 3 정규형 
-2정규형 + 
-후보 키가 아닌 애트리뷰트들에서 이행 종속이 발생하지 않는다.
제 3 정규형 위배 
ENAME 
SSN 
BDATE 
ADDRESS 
DNUMBER 
DNAME 
DMGRSSN 
EMP_DEPT 
이행 함수적 종속성
BCNF 
X  Y 인 모든 X, Y에 대하여 
(1)Y가 X의 부분집합이거나 
(2)X는 후보 키어야 한다. 
-후보 키가 아닌 애트리뷰트가 
다른 애트리뷰트를 함수적으로 결정하면 BCNF가 아니다. 
기타 : cycle이 생기면 BCNF가 아니다.
THANK YOU!!!

More Related Content

What's hot

12장 함수 조합 다시 보기4
12장 함수 조합 다시 보기412장 함수 조합 다시 보기4
12장 함수 조합 다시 보기4
cosmosyc
 

What's hot (14)

8 거대한 표현을 잘게 쪼개기
8 거대한 표현을 잘게 쪼개기8 거대한 표현을 잘게 쪼개기
8 거대한 표현을 잘게 쪼개기
 
RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
 
03. function in typescript
03. function in typescript03. function in typescript
03. function in typescript
 
12장 함수 조합 다시 보기4
12장 함수 조합 다시 보기412장 함수 조합 다시 보기4
12장 함수 조합 다시 보기4
 
C# 세미나 12회차
C# 세미나 12회차C# 세미나 12회차
C# 세미나 12회차
 
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
 
Haskell study 6
Haskell study 6Haskell study 6
Haskell study 6
 
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
Cp2 w5
Cp2 w5Cp2 w5
Cp2 w5
 
타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key타임리프 폼과 어노테이션.Key
타임리프 폼과 어노테이션.Key
 
9. pointer
9. pointer9. pointer
9. pointer
 
Regex
RegexRegex
Regex
 

Viewers also liked

데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화
Lee Seongje
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증
Byunglim Park
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해
Byung Kook Ha
 

Viewers also liked (20)

MySQL 인덱스의 기초
MySQL 인덱스의 기초MySQL 인덱스의 기초
MySQL 인덱스의 기초
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개
 
2. MySQL DataTye Basic
2. MySQL DataTye Basic2. MySQL DataTye Basic
2. MySQL DataTye Basic
 
데이터베이스 모델링
데이터베이스 모델링데이터베이스 모델링
데이터베이스 모델링
 
암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHEN
 
트랜잭션
트랜잭션 트랜잭션
트랜잭션
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create Table
 
MySQL Select (1)
MySQL Select (1)MySQL Select (1)
MySQL Select (1)
 
20150724 제10회 부산 모바일 포럼 - 웹과 모바일을 위한 클라우드 데이터베이스 필승 전략
20150724 제10회 부산 모바일 포럼 - 웹과 모바일을 위한 클라우드 데이터베이스 필승 전략20150724 제10회 부산 모바일 포럼 - 웹과 모바일을 위한 클라우드 데이터베이스 필승 전략
20150724 제10회 부산 모바일 포럼 - 웹과 모바일을 위한 클라우드 데이터베이스 필승 전략
 
Tutorial olap4j
Tutorial olap4jTutorial olap4j
Tutorial olap4j
 
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
 
디지털 인문학 데이터베이스 개론
디지털 인문학 데이터베이스 개론디지털 인문학 데이터베이스 개론
디지털 인문학 데이터베이스 개론
 
게임을 위한 DynamoDB 사례 및 팁 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임을 위한 DynamoDB 사례 및 팁 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임을 위한 DynamoDB 사례 및 팁 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임을 위한 DynamoDB 사례 및 팁 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화
 
NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증NDC14 창업을결정하기전3가지자기검증
NDC14 창업을결정하기전3가지자기검증
 
NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템NDC2014 코인박스@NDC 치킨럽포스트모템
NDC2014 코인박스@NDC 치킨럽포스트모템
 
데이터베이스의 이해
데이터베이스의 이해데이터베이스의 이해
데이터베이스의 이해
 

Similar to 데이터베이스 정규화

파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
Yong Joon Moon
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
Kimjeongmoo
 

Similar to 데이터베이스 정규화 (14)

파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초
 
You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2You don't know JS / this / chapter 1-2
You don't know JS / this / chapter 1-2
 
ES6 for Node.js Study
ES6 for Node.js StudyES6 for Node.js Study
ES6 for Node.js Study
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차
 
3주차 스터디
3주차 스터디3주차 스터디
3주차 스터디
 
Assembly 스터디 2
Assembly 스터디 2Assembly 스터디 2
Assembly 스터디 2
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
 
Macro & compilation
Macro & compilationMacro & compilation
Macro & compilation
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2
 

More from Hoyoung Jung

포인터의 공식
포인터의 공식포인터의 공식
포인터의 공식
Hoyoung Jung
 

More from Hoyoung Jung (20)

철권 1단에서 벗어나기
철권 1단에서 벗어나기철권 1단에서 벗어나기
철권 1단에서 벗어나기
 
코딩 공부 시작하기
코딩 공부 시작하기코딩 공부 시작하기
코딩 공부 시작하기
 
내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까
 
entry를 이용한 코딩 교육1
entry를 이용한 코딩 교육1entry를 이용한 코딩 교육1
entry를 이용한 코딩 교육1
 
Github Markdown
Github MarkdownGithub Markdown
Github Markdown
 
stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbc
 
mysql stored procedure
mysql stored proceduremysql stored procedure
mysql stored procedure
 
mysql 서브쿼리
mysql 서브쿼리mysql 서브쿼리
mysql 서브쿼리
 
tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍
 
MySQL JOIN
MySQL JOINMySQL JOIN
MySQL JOIN
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.update
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터
 
Mymysql basic sql
Mymysql basic sqlMymysql basic sql
Mymysql basic sql
 
Crontab 간단 사용법
Crontab 간단 사용법Crontab 간단 사용법
Crontab 간단 사용법
 
3.포인터
3.포인터3.포인터
3.포인터
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 
Preemption under Linux
Preemption under LinuxPreemption under Linux
Preemption under Linux
 
포인터의 공식
포인터의 공식포인터의 공식
포인터의 공식
 

Recently uploaded

Recently uploaded (8)

JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 

데이터베이스 정규화

  • 1. 데이터베이스 개론 정규화 NHN NEXT 정호영 나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
  • 2. GOAL -1 정규형의 정의를 안다. -2 정규형의 정의를 안다. -3 정규형의 정의를 안다. -BCNF의 정의를 안다. -주어진 스키마가 어떤 정규형을 만족하는지 판단할 수 있다.
  • 3. 데이터베이스 설계 다시보기 데이터베이스 설계 = 테이블을 만드는 과정 테이블을 만드는 과정 = 애트리뷰트를 어떻게 묶을 것인지를 결정 좋은 테이블을 설계 = 애트리뷰트를 잘 묶는 방법
  • 4. 잘 설계된 테이블 다른 테이블의 애트리뷰트 값을 읽어오는 것은 외래키의 참조를 통해서만 가능해야 한다.
  • 5. 잘못된 설계 ENAME SSN BDATE ADDRESS DNUMBER DNAME DMGRSSN EMP_DEPT SSN PNUMBER HOURS ENAME PNAME PLOCATIONS EMP_PROJ fd1 fd2 fd3
  • 6. 잘못된 설계의 문제점 데이터의 중복 발생 이상현상(anormaly) 발생 이상현상 - 삽입이상/ 삭제이상 / 갱신이상
  • 7. 삽입 이상 새로운 부서를 신설하고 싶습니다. ENAME SSN BDATE ADDRESS DNUMBER DNAME DMGRSSN EMP_DEPT
  • 8. 삭제 이상 마지막 사원이 나갔습니다. ENAME SSN BDATE ADDRESS DNUMBER DNAME DMGRSSN EMP_DEPT
  • 9. 갱신 이상 개발팀의 이름이 dev팀으로 바뀌었습니다. ENAME SSN BDATE ADDRESS DNUMBER DNAME DMGRSSN EMP_DEPT
  • 10. 정규형 (Normal Form) 이상현상이 잘 안 생기는 좋은 테이블이 갖추어야 할 조건 -1, 2, 3 정규형 -BCNF
  • 11. 정규화 (Nomalization) -테이블이 정규형을 만족할 수 있도록 잘 분해하는 과정 -1정규화  테이블이 1 정규형을 만족하게 됨 -3정규화  테이블이 3 정규형을 만족하게 됨
  • 12. 함수적 종속성 두 애트리뷰트 X,Y에서 X가 Y를 함수적으로 결정 X  Y
  • 13. 함수적 종속성 두 애트리뷰트 X,Y에서 X의 값이 유일한 Y값을 결정 X  Y
  • 14. 함수적 종속성 두 애트리뷰트 X,Y에서 Y는 X에 함수적으로 종속 X  Y
  • 15. * 진짜 함수 Y = X * X : 함수 X가 Y를 함수적으로 결정한다. Y가 달라지면 X값은 반드시 달라진다. cf.) X가 달라져도 Y는 같을 수 있다. X  Y X 0 1 -1 2 -2 … Y 0 1 1 4 4 …
  • 16. 함수적 종속성 예시 1.주민번호  이름 2.부서 ID  부장이름 3.이름  직속상관 이 중에 틀린 것은?
  • 17. key 다시보기 슈퍼키(super key) -애트리뷰트의 집합 -고유하게 식별됨 예) - [사번, 부양가족이름] - [주민번호 앞자리, 주민번호 뒷자리, 이름] - [사번,이름, 성별, 나이, 부서, 집전화, … ]
  • 18. key 다시보기 후보키 (candidate key) -슈퍼키의 부분집합 -구성 애트리뷰트중 하나라도 제거하면 슈퍼 키가 아닌 것 앞 장의 예제에서 후보키가 있나요? - [사번, 부양가족이름] - [주민번호 앞자리, 주민번호 뒷자리, 이름] - [사번,이름, 성별, 나이, 부서, 집전화, … ]
  • 19. key 다시보기 기본 키 (primary key) - 여러 후보키 중 대표적인 키 하나가 테이블의 기본 키가 됨
  • 20. 함수적 종속성과 후보키(candidate key) 모든 다른 애트리뷰트을 함수적으로 결정하는 애트리뷰트 ENAME SSN BDATE ADDRESS DNUMBER EMP_DEPT
  • 21. 제 1 정규형 - 테이블은 반드시 하나 이상의 키를 가지고 있어야 한다. - 애트리뷰트의 도메인이 오직 원자값만을 포함한다.
  • 22. 제 1 정규형 다음과 같은 속성은 허용하지 않는다. - 복합 애트리뷰트 - 다중 애트리뷰트 - 중첩 릴레이션
  • 23. 제 1 정규형 이것만 기억하자. 기본키가 있고 애트리뷰트가 원자값을 가지면 제 1 정규형
  • 24. 진짜 제 1 정규형의 정의 http://ko.Wikipedia.org/wiki/제1정규형 (1)열에는 위-아래의 순서가 없다. (2)행에는 좌-우의 순서가 없다. (3)중복되는 열이 없다. (4)열과 행의 교차점에는 반드시 하나의 값이 존재해야 한다.
  • 25. 완전 함수적 종속과 제 2 정규형 *완전 함수적 종속 ABC  X라고 할 때 ABC중 하나라도 제거하면 함수적 종속이 발생하지 않는 경우
  • 26. 완전 함수적 종속과 제 2 정규형 *부분 함수적 종속 완전함수적 종속이 아닌 경우 부분 함수적 종속이라고 함 예) ABC  D BC  D
  • 27. 제 2 정규형 -1정규형을 만족하고 -후보 키가 아닌 애트리뷰트들이 후보 키에 대해 완전 함수적 종속인 경우
  • 28. 제 2 정규형 후보 키는? (SSN, PNUMBER) SSN PNUMBER HOURS ENAME PNAME PLOCATIONS EMP_PROJ fd1 fd2 fd3
  • 29. 제 2 정규형 부분 함수적 종속이 발생하므로 2 정규형이 아님 SSN PNUMBER HOURS ENAME PNAME PLOCATIONS EMP_PROJ fd1 fd2 fd3 완전 함수적 종속성 부분 함수적 종속성 부분 함수적 종속성
  • 30. 제 2 정규형 고쳐 봅시다! SSN PNUMBER HOURS ENAME PNAME PLOCATIONS EMP_PROJ fd1 fd2 fd3 완전 함수적 종속성 부분 함수적 종속성 부분 함수적 종속성
  • 31. 이행 종속과 제 3 정규형 *이행 종속 X  Y 이고 Y  Z 이면 X  Z
  • 32. 제 3 정규형 -2정규형 + -후보 키가 아닌 애트리뷰트들에서 이행 종속이 발생하지 않는다.
  • 33. 제 3 정규형 위배 ENAME SSN BDATE ADDRESS DNUMBER DNAME DMGRSSN EMP_DEPT 이행 함수적 종속성
  • 34. BCNF X  Y 인 모든 X, Y에 대하여 (1)Y가 X의 부분집합이거나 (2)X는 후보 키어야 한다. -후보 키가 아닌 애트리뷰트가 다른 애트리뷰트를 함수적으로 결정하면 BCNF가 아니다. 기타 : cycle이 생기면 BCNF가 아니다.