데이터베이스 정규화
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
데이터베이스 정규화 목적
- 데이터 중복 제거
- 효율성 향상
- 데이터 무결성 보장
정규화 단계
- 제1 정규화(1NF) : 각 컬럼이 원자 값(하나의 값)을 가지도록 하는 과정
- 제2 정규화(2NF) : 제1 정규화를 완료한 테이블에서, 부분 함수 종속성을 제거하는 과정(테이블의 주제와 관련없는 컬럼을 다른 테이블로 분리하는 작업)
- 제3 정규화(3NF) : 제2 정규화를 완료한 테이블에서, 이행적 함수 종속성을 제거하는 과정(테이블을 최소 단위로 분리하는 작업)
정규화별 충족 규칙
제1 정규화(1NF)
- 각 컬럼이 하나의 속성만을 가져야 한다.
- 하나의 컬럼은 같은 종류나 타입의 값을 가져야 한다.
- 각 컬럼이 유일한(unique) 이름을 가져야 한다.
- 컬럼의 순서가 상관 없어야 한다.
제2 정규화(2NF)
- 제1 정규화를 만족해야 한다.
- 모든 컬럼이 부분적 종속이 없어야 한다. == 모든 컬럼이 완전 함수 종속을 만족해야 한다.
-> 모든 컬럼은 기본키에 완전하게 종속되어야 한다.
-> 기본키가 복합키인(기본키 역할을 하는 컬럼이 2개일 때) 경우 모든 컬럼이 복합키에 종속되어야 함
제3 정규화(3NF)
- 제2 정규화를 만족해야 한다.
- 기본키를 제외한 속성들 간의 이행 종속성이 없어야 한다.
(이행 종속성 : A->B, B->C 일 때 A->C 가 성립)