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