9장, 정규화
정규화(normalization)
: 이상(anomaly) 현상을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정
이상(anomaly) 현상
: 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입·수정·삭제 연산을 수행할 때 발생하는 부작용
이상 현상의 종류
- 삽입 이상(insertion anomaly) : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상(update anomaly) : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상(deletion anomaly) : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
이상현상의 발생 이유 ?
관련이 없는 데이터, 관련이 없는 속성들을 하나의 릴레이션에 모아 두고 있기 때문
이상 현상의 발생을 막기 위해 정규화를 통해 릴레이션을 분해하는데, 먼저 속성들 간의 관련성을 판단해야 한다. 정규화 과정에서 고려해야 하는 속성들 간의 관련성을 함수적 종속성(FD : Functional Dependency)이라 한다.
함수 종속
하나의 릴레이션을 구성하는 속성들의 부분 집합을 X와 Y라 할 때, 어느 시점에서든 릴레이션 내의 모든 튜플에서 하나의 X값에 대한 Y 값이 항상 하나면 "X가 Y를 함수적으로 결정한다" 또는 "Y가 X에 함수적으로 종속되어 있다"라고 한다.
X → Y
함수의 종속 관계를 판단할 때에는 현재 시점에 릴레이션에 포함된 속성 값만으로 판단해서는 안 된다. 속성 자체가 가지고 있는 특성과 의미를 기반으로 판단해야 한다.
완전 함수 종속(FFD : Full Functional Dependency)
: 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X 전체에 종속된 것이지 일부분에 종속된 것이 아님
부분 함수 종속(PFD : Partial Functional Dependency)
: 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨
정규화의 기본 목표는 '관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것'이다.
릴레이션이 정규화된 정도는 정규형(NF : Normal Form)으로 표현한다.
정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다. 일반적으로 차수가 높을수록 이상 현상이 발생하지 않는 바람직한 릴레이션일 수 있다.
※ 정규화 과정에서 릴레이션을 분해할 때 주의할 점은, 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다는 것이다. 즉, 릴레이션이 의미상 동등한 릴레이션으로 분해되어야 하고, 릴레이션을 분해했을 때 정보 손실이 발생하지 않아야 한다. → 무손실 분해(nonloss decomposition)
제1 정규형(1NF : First Normal Form)
: 릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성되어 있다.
최소 제1 정규형은 만족해야 관계형 데이터베이스의 릴레이션이 될 수 있다.
제2 정규형(2NF : Second Normal Form)
: 릴레이션이 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된다.
제3 정규형(3NF : Third Normal Form)
: 릴레이션이 제2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는다.
이행적 함수 종속(transitive FD)
: X → Y, Y → Z 이면 X → Z = Z가 X에 이행적으로 함수 종속되어 있다.
보이스/코드 정규형(BCNF : Boyce/Codd Normal Form) / 강한 제3 정규형(strong 3NF)
: 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키다.
제4 정규형
: 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)을 제거한 것
제5 정규형
: 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(JD : Join Dependency)을 제거한 것
실제로 모든 릴레이션이 제5 정규형에 속하도록 릴레이션을 분해하는 것은 아니다. 오히려 제5 정규형을 만족할 때까지 분해하면 비효율적이고 바람직하지 않은 경우가 많다.
참고자료
김연희, 『데이터베이스 개론 2판』, 한빛문화원(2019), p354-p394
'IT Basic > Data' 카테고리의 다른 글
[DB] 데이터베이스 개론 - 11장 보안과 권한 관리 (0) | 2022.02.07 |
---|---|
[DB] 데이터베이스 개론 - 10장 회복과 병행 제어 (0) | 2022.02.07 |
[DB] 데이터베이스 개론 - 8장 데이터베이스 설계 (0) | 2022.02.07 |
[DB] 무결성(Integrity)과 보안(security) (0) | 2022.01.25 |
[DB] 데이터베이스 개론 - 7장 데이터베이스 언어 SQL (0) | 2022.01.23 |
댓글