02 함수 종속
하나의 릴레이션을 구성하는 속성들의 부분 집합을 x, y라 할때 어느 시점에서 모든 투플에서 x값에 대한 y값이 항상 하나면 x가 y를 함수적으로 결정한다 혹은 y가 x에 함수적으로 종속되어 있다 라고 한다
함수 종속 관계는 x->y로 표현한다. x가 결정자 y는 종속자라 한다
함수 종속 관계를 판단할 때 유의점
현재 시점에 릴레이션에 포함된 속성 값만으로 판단하면 안된다는 것
릴레이션에서 속성 값은 계속 변할 수 있기에 속성 자체가 가지고 있는 특성과 의미를 기반으로 판단해야 한다
03 기본 정규형과 정규화 과정
1. 정규화의 개념과 정규형의 종류
정규화
함수 종속성을 이용하여 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만드는 과정
정규화의 기본 목표는 관련이 없는 함수 종속성을 변개의 릴레이션으로 표현하는 것
릴레이션의 정규화된 정도는 정규형 NF = normal form으로 표현한다
정규형은 크게 기본 정규형과 고급 정규형으로 나뉜다
- 정규형
- 기본 정규형
- 제 1 정규형
- 제 2 정규형
- 제 3 정규형
- 보이스/코드 정규형
- 고급 정규형
- 제 4 정규형
- 제 5 정규형
- 기본 정규형
각 정규형마다 만족시켜야 하는 제약조건이 존재한다
릴레이션이 특정 정규형의 제약조건을 만족하면 릴레이션이 해당 정규형에 속한다고 표현한다
정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다
일반적으로 차수가 높은 정규형에 속하는 릴레이션일수록 데이터 중복이 줄어 데이터 중복에 의한 이상 현상잉 발생하지 않는 릴레이션이다
하지만, 모든 릴레이션이 5에 속해야 하는것은 아니다. 적절한 정규형을 선택해야 한다
2. 제 1 정규형
릴레이션에 속한 모든 속성의 도메인이 원자값 altomic value으로만 구성되어 있으면 제 1 정규형에 속한다
즉, 한 속성에 여러 다중 값을 가지고 있는 투플이 있으면 해당 정규형 조건을 어기게 된다
ex - 아이디, 물품 속성이 아이디 하나에 책, 연필, 노트 이렇게 있을 경우 원가값이 아니기에 문제가 된다
| 아이디 | 책, 연필, 노트 |
이렇게 될시 원자값이 아니기에 문제가 된다
| 아이디 | 책 |
| 아이디 | 연필 |
| 아이디 | 노트 |
이렇게 될시 원자값이기에 제 1 정규형 조건을 맞추게 된다
다만, 불필요한 데이터 중복이 있기에 이상 현상은 여전히 발생할 수 있다
3. 제 2 정규형
릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형에 속한다
부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다
릴레이션 분해시 주의점
분해된 릴레이션들은 자연 조인하여 분해 전의 릴레이션으로 복원이 가능해야 한다
릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 릴레이션을 분해했을 때 정봅 손실이 발생하지 않아야 한다
제 2 정규형에 속하더라도 릴레이션에 이상 현상이 발생할 수 있다
분해전
| 1001 | 김철수 | C101 | 데이터베이스 | 이교수 |
| 1001 | 김철수 | C102 | 운영체제 | 박교수 |
| 1002 | 이영희 | C101 | 데이터베이스 | 이교수 |
분해후
| 1001 | 김철수 |
| 1002 | 이영희 |
| 1001 | C101 |
| 1001 | C102 |
| 1002 | C101 |
| C101 | 데이터베이스 | 이교수 |
| C102 | 운영체제 | 박교수 |
4. 제 3 정규형
릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형에 속한다
릴레이션에서 이행적 함수 종속을 제거해서, 모든 속성이 기본키에 이행적 함수 종속이 되지 않도록 릴레이션 분해하는 정규화 과정을 거쳐야 제 3 정규형을 만들 수 있다
분해 전
| 직원ID | 직원이름 | 부서ID | 부서이름 |
| E01 | 김철수 | D10 | 인사팀 |
| E02 | 이영희 | D20 | 개발팀 |
| E03 | 박민수 | D10 | 인사팀 |
분해 후
| 직원ID | 직원이름 | 부서ID |
| E01 | 김철수 | D10 |
| E02 | 이영희 | D20 |
| E03 | 박민수 | D10 |
| 부서ID | 부서이름 |
| D10 | 인사팀 |
| D20 | 개발팀 |
5. 보이스/코드 정규형 BCNF : Boyce/Codd Normal Form
릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다
현재까지의 정규형 릴레이션의 경우 모두 기본키와 후보키를 하나씩 가지고 있다. 후보키 속성이 하나여서 이를 기본키로 선정한 경우이다
하지만 하나의 릴레이션에 여러개의 후보키가 존재할 수도 있는데, 이 경우 3 정규형까지 만족해도 이상 현상이 발생할 수 있다
후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약조건을 제시한 것이 보이스/코드 정규형이다
보이스 코드 정규형은 모두 제 3 정규형이지만, 제 3 정규형은 모두 보이스 코드 정규형이 아니기에, 다른 말로는 강한 제 3 정규형이라고도 한다
6. 제 4 정규형과 제 5 정규형
고급 정규형으로 분류되는 제 4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속 = MVD : multi valued dependency을 제거해야 만족할 수 있다
제 5 정규형은 릴레이션이 제 4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거해야 만족할 수 있다
하지만 데이터베이스를 설계할 때 무조건 제 5 정규형에 속하도록 분해해야 하는것은 아니다. 오히려 비효율적인 경우가 많아진다
일반적으로는 제 3 정규형이나 보이스/코드 정규형에 속하도록 분해한다
- 비정규형 릴레이션
- 속성의 도메인이 원자 값으로만 구성되도록 분해
- 제1 정규형 릴레이션
- 부분 함수 종속 제거
- 제2 정규형 릴레이션
- 이행적 함수 종속 제거
- 제3 정규형 릴레이션
- 후보키가 아닌 결정자 제거
- 보이스/코드 정규형 릴레이션
순서가 된다
'공부 > 데이터베이스' 카테고리의 다른 글
| 10. 회복과 병행 제어 / 01 트랜잭션 (0) | 2025.09.15 |
|---|---|
| 9. 정규화 / 총 정리 (1) | 2025.09.14 |
| 9. 정규화 / 01 정규화의 개념과 이상 현상 (0) | 2025.09.14 |
| 8. 데이터베이스 설계 / 02 요구 사항 분석 / 03 개념적 설계 / 04 논리적 설계 / 05 물리적 설계와 구현 (0) | 2025.09.14 |
| 8. 데이터베이스 설계 / 01 데이터베이스 설계 단계 (0) | 2025.09.13 |