2.1 정규화
데이터베이스의 이상현상(Anomaly) : 모델링된 데이터베이스의 테이블(=엔터티)과 관계들의 데이터를 입력, 수정, 삭제하는 과정에서 의도치 않게 일관성이 깨지는 현상. 삽입 이상, 갱신 이상, 삭제 이상으로 나눌 수 있다.
정규화(Normalization) : 이상현상을 방지하기 위해 데이터의 중복을 최소화하면서 테이블을 더 조직된 상태로 분해하는 과정.
정규화 수행 시 입력, 수정, 삭제의 성능은 일반적으로 향상된다. 하지만 조회의 성능은 대부분 하락한다. 때문에 조회 성능의 향상을 위해 반정규화를 수행하기도 한다.
제1정규형(1NF) : 모든 속성이 하나의 속성값만을 가지고 있으면서 유사한 속성이 반복되지 않는 상태(원자성 확보 상태). 하나의 속성이 여러 속성값을 가지거나, 하나의 테이블에 유사한 속성이 반복될 때 이를 별도의 테이블로 분리한다.
제1정규형 위반 예시 :
학번(PK) | 이름 | 수강과목 |
---|---|---|
2024001 | 공은호 | 자료구조, 웹프로그래밍 |
2024002 | 홍길동 | 운영체제 |
제1정규화 수행 이후 :
학번(PK) | 이름 |
---|---|
2024001 | 공은호 |
2024002 | 홍길동 |
학번(FK) | 수강과목 |
---|---|
2024001 | 자료구조 |
2024001 | 웹프로그래밍 |
2024002 | 운영체제 |
부분 함수종속성 : 복합식별자에서, 일반 속성이 주식별자의 일부에만 족속성을 가지는 경우.
제2정규형(2NF) : 부분 함수종속성을 제거한 상태. 주식별자에 완전하게 종속적이지 않은 속성을 별도의 테이블로 분리한다.
제2정규형 위반 예시 (과목명, 학점은 과목코드에만 종속) :
학번(FK) | 과목코드(FK) | 과목명 | 학점 |
---|---|---|---|
2024001 | CS101 | 자료구조 | 3 |
2024001 | CS102 | 웹프로그래밍 | 3 |
2024002 | CS101 | 자료구조 | 3 |
제2정규화 수행 이후 :
학번(FK) | 과목코드(FK) |
---|---|
2024001 | CS101 |
2024001 | CS102 |
2024002 | CS101 |
과목코드(PK) | 과목명 | 학점 |
---|---|---|
CS101 | 자료구조 | 3 |
CS102 | 웹프로그래밍 | 3 |
이행 함수종속성 : 주식별자가 아닌 일반 속성 간에 함수종속성이 존재하는 경우.
제3정규형(3NF) : 이행 함수종속성을 제거한 상태. 주식별자가 아닌 일반 속성은 주식별자에만 종속되어야 한다.
제3정규형 위반 예시 (학과가 지도교수에 종속) :
학번(PK) | 지도교수 | 학과 |
---|---|---|
2024001 | 정교수 | 소프트웨어학과 |
2024002 | 명교수 | 해고방지학과 |
2024003 | 김교수 | 소프트웨어학과 |
2024004 | 명교수 | 해고방지학과 |
제3정규화 수행 이후 :
학번(PK) | 지도교수 |
---|---|
2024001 | 정교수 |
2024002 | 명교수 |
2024003 | 김교수 |
2024004 | 명교수 |
지도교수명(PK) | 학과 |
---|---|
정교수 | 소프트웨어학과 |
김교수 | 소프트웨어학과 |
명교수 | 해고방지학과 |