정규화
- 불필요한 데이터의 중복으로 인한 연산의 부작용이 발생하는 이상 현상을 제거하기 위한 과정
- 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정
- 함수적 종속성을 판단하여 정규화 수행
이상 현상의 종류
- 삽입 이상 : 데이터를 삽입할 때, 불필요한 데이터도 함꼐 삽입되는 문제
- 갱신 이상 : 중복 데이터 중, 일부만 변경되어 데이터의 불일치 발생
- 삭제 이상 : 데이터를 삭제할 떄, 필요한 데이터까지 함께 삭제되는 문제
함수 종속
- X와 Y는 하나의 릴레이션을 구성하는 속성들의 부분 집합
- Y가 X에 함수적으로 종속되어 있다는 의미
- 표현식 : X → Y (X는 결정자, Y는 종속자)
완전 함수 종속
- X의 속성 집합 전체에 종속되는 것을 의미
- 가장 일반적인 함수 종속을 의미
부분 함수 종속
정규형
- 릴레이션이 정규화된 정도
- 정규형의 차수가 높아질수록 제약조건이 많아짐
제1정규형 (1NF)
- 릴레이션의 모든 속성의 도메인이 더는 분해되지 않는 원자 값만 가짐
- 데이터 중복을 가짐
- 기본키에 완전 함수 종속되지 못한 속성이 있을 수 있음 (EX. 이름 → 생일)
- 완전 함수 종속되지 못해 삽입 이상, 갱신 이상, 삭제 이상 발생
이름 |
과목번호 |
생일 |
과목 |
홍길동 |
A1 |
870723 |
수학 |
홍길동 |
A2 |
870723 |
영어 |
이순신 |
A2 |
070610 |
영어 |
안중근 |
A3 |
011223 |
과학 |
장보고 |
A3 |
050624 |
과학 |
제2정규형 (2NF)
- 기본키에 완전 함수 종속이 만족하는 제1정규형
- 이행적 함수 종속으로 인해 삽입 이상, 갱신 이상, 삭제 이상 발생
- 이행적 함수 종속 : X → Y, Y → Z 일 떄, X → Z도 성립
이름 |
과목번호 |
과목 |
홍길동 |
A1 |
수학 |
홍길동 |
A2 |
영어 |
이순신 |
A2 |
영어 |
안중근 |
A3 |
과학 |
장보고 |
A3 |
과학 |
이름 |
생일 |
홍길동 |
870723 |
홍길동 |
870723 |
이순신 |
070610 |
안중근 |
011223 |
장보고 |
050624 |
제3정규형 (3NF)
이름 |
과목번호 |
홍길동 |
A1 |
홍길동 |
A2 |
이순신 |
A2 |
안중근 |
A3 |
장보고 |
A3 |
과목번호 |
과목 |
A1 |
수학 |
A2 |
영어 |
A2 |
영어 |
A3 |
과학 |
A3 |
과학 |
보이스/코드 정규형 (BCNF)
- 릴레이션에 여러 개의 후보키가 존재할 때, 제3정규형에서도 이상 현상이 발생할 수 있음
- 후보키가 아닌 배달번호가 배달원의 속성을 결정함
가게 |
배달원 |
배달번호 |
조선짜장 |
이순신 |
X1 |
고려짜장 |
장보고 |
X2 |
신라짜장 |
이순신 |
X1 |
NULL |
홍길동 |
X3 |
문제의 테이블, 가게에 배정되지 않은 배달원이 있음