데이터베이스 개론 정규화 
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!!!

데이터베이스 정규화

  • 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 다시보기 슈퍼키(superkey) -애트리뷰트의 집합 -고유하게 식별됨 예) - [사번, 부양가족이름] - [주민번호 앞자리, 주민번호 뒷자리, 이름] - [사번,이름, 성별, 나이, 부서, 집전화, … ]
  • 18.
    key 다시보기 후보키(candidate key) -슈퍼키의 부분집합 -구성 애트리뷰트중 하나라도 제거하면 슈퍼 키가 아닌 것 앞 장의 예제에서 후보키가 있나요? - [사번, 부양가족이름] - [주민번호 앞자리, 주민번호 뒷자리, 이름] - [사번,이름, 성별, 나이, 부서, 집전화, … ]
  • 19.
    key 다시보기 기본키 (primary key) - 여러 후보키 중 대표적인 키 하나가 테이블의 기본 키가 됨
  • 20.
    함수적 종속성과 후보키(candidatekey) 모든 다른 애트리뷰트을 함수적으로 결정하는 애트리뷰트 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가 아니다.
  • 35.