정규화를 이해하려면,
우선 이상(Anomaly)에 대해 알 필요가 있습니다.
이상: 한 릴레이션에서 일부 속성들의 함수적 종속으로 인해 데이터의 중복이 발생하는 것
- 삽입, 삭제, 갱신 이상이 존재
다시말해,
자료가 (객체지향 프로그래밍이 피해야할) 종속성을 가지고 있어
데이터 처리시 모순이 발생하는 것을 이상이라고 합니다.
여기서 함수적 종속이란, 한 속성이 다른 속성의 값을 유일하게 결정하는 것을 말합니다.
(X -> Y: Y는 X에 종속)
정규화는 바로 이러한 자료의 이상을 해결하기 위해 고안된 방법입니다.
각각의 정규형에 대해 알아보겠습니다.
- 제 1 정규형(1NF)
: 모든 속성의 도메인이 원자값으로 구성
(원자값은 단일값을 말하며, 즉, 복합값, 다중값이 아닌 값을 말합니다.)
(출처: http://myeonguni.tistory.com/210)
- 제 2 정규형(2NF)
: 제 1정규형을 만족하고, 모든 속성의 부분적 함수적 종속을 제거
(부분적 함수적 종속: 한 릴레이션에 존재하는 여러 키값에 대해 부분적으로 종속된 상태)
(즉, 모든 속성이 완전 함수적 종속을 만족하는 상태를 말합니다.)
- 제 3 정규형(3NF)
: 제 2정규형을 만족하고, 모든 속성의 이행적 함수적 종속을 제거
(이행적 함수적 종속: X -> Y, Y -> Z)
- Boyce-codd 정규형(BCNF)
: 제 3정규형을 만족하고, 후보키가 아닌 결정자를 제거
(결정자: X -> Y에서 X를 가리킴)
각 정규형은 그보다 앞선 정규형을 만족하며, 더욱 엄격한 조건을 같습니다.
위 정규형 이외에도 다치 종속성을 제거한 제 4정규형(4NF), 조인 종속성을 제거한 제 5정규형(5NF)
등 수많은 정규형이 존재하지만,,
관계형 데이터베이스의 설계목표는 각 릴레이션이 3NF, BCNF를 갖게 하는 것입니다.
'Dev- > 자료구조, 알고리즘' 카테고리의 다른 글
2581번) 소수 (0) | 2018.09.27 |
---|---|
재귀함수의 쓰임은 무한루프만?? (0) | 2018.09.13 |
재귀함수가 무한루프에 빠지지 않기 위한 조건 2가지 (0) | 2018.09.10 |
시간복잡도란? (0) | 2018.09.10 |
스택(Stack), 큐(Queue), 그리고 덱(Deque) (0) | 2018.08.24 |