데이터베이스 정규화
데이터베이스 정규화
이 글은 Tistory에서 이전된 포스팅입니다. 원본은 여기에서 확인할 수 있습니다.
정규화
- 이상 현상(삽입, 삭제, 갱신) 을 제거하기 위해 테이블을 분해하는 과정이다.
정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.
- 테이블을 분해하므로 JOIN이 늘어나고 성능이 느려질 수도 있다. 그래서 반정규화도 존재한다.
제1 정규화
- 속성의 원자성을 확보하고 원자값이 아닌 도메인을 분해해라.
제2 정규화
완전 함수 종속을 만족해라 = 부분 함수 종속을 제거해라
완전 함수 종속 : 기본키가 2개 이상으로 이루어진 경우, 기본키의 부분집합이 결정자가 되어선 안된다
제3 정규화
- 이행 함수 종속을 제거해라
ex) A->B (B는 A를 의존한다.)
A(PK) B C 컬럼을 가진 테이블에서
A->B, B->C, A->C 라면 기본키를 제외한 컬럼간 종속성이 있다.
BCNF
결정자이면서 후보키가 아닌 것을 제거해라 ( 결정자 후보 키가 아닌 함수 종속 제거 )
결정자 : A->B에서 A를 말한다.
KEY
후보키 : 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합 (유일성, 최소성 만족)
기본키 : 후보키 중 하나
슈퍼키 : 유일성만 만족
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.