1. 복잡한 함수 종속성 다듬기: 정규형 커버 (Canonical Cover)
- 주어진 함수 종속성(FD) 집합이 복잡하거나 불필요한 정보를 포함하는 경우에 '정규형 커버(Canonical Cover)' 사용
정규형 커버란?
- 정규형 커버는 주어진 FD 집합 F와 논리적으로 동등하면서, 더 이상 단순화할 수 없는 최소한의 FD 집합
를 의미
- 즉, 로부터 유추할 수 있는 모든 종속 관계를 로부터도 똑같이 유추 ().
- 정규형 커버는 다음 세 가지 조건을 만족해야 함
- 불필요한 속성(Extraneous Attribute)이 없음
- 모든 FD의 왼쪽(결정자)은 유일(Unique)함
- 불필요한 FD가 없음
정규형 커버 계산 과정
- 정규형 커버는 다음과 같은 단계를 통해 계산

- 결합 (Union Rule):
- FD들의 결정자(LHS)가 같다면, 종속자(RHS)들을 하나로 합침
- 예를 들어, ${A \rightarrow B, A \rightarrow C}$는 로 합칠 수 있음 -
- 결정자(LHS)의 불필요한 속성 확인:
에서 가 불필요한지 확인하려면, 를 제외한 만으로 를 결정할 수 있는지()를 기존 FD 집합으로 증명 - 종속자(RHS)의 불필요한 속성 확인:
에서 가 불필요한지 확인하려면, 해당 FD를 로 바꾼 상태에서 여전히 가 전체 FD 집합으로부터 유추되는지 확인
- 결정자(LHS)의 불필요한 속성 확인:
- 불필요한 속성 제거:
- 결정자 또는 종속자에 불필요한(extraneous) 속성이 있는지 확인하고 제거 - 불필요한 FD 제거:
- 특정 FD 전체가 다른 FD들에 의해 유추될 수 있다면 해당 FD를 제거
이 과정을 반복하면 최종적으로 가장 간결한 형태의 FD 집합인 정규형 커버를 얻을 수 있음
2. 스키마 분해의 핵심 원칙: 종속성 보존
- 스키마를 정규화하기 위해 테이블을 분해(Decomposition)할 때, 두 가지 목표를 달성
- 바로 무손실 조인(Lossless Join)과 종속성 보존(Dependency Preservation)
- 종속성 보존이란, 원래 스키마의 모든 함수 종속성을 분해된 테이블들 내에서 각각 검증할 수 있는 상태를 의미
- 만약 분해가 종속성을 보존하지 못한다면, 원래의 FD를 검증하기 위해 분해된 테이블들을 다시 조인(Join)해야 하는 상황이 발생
- 이는 데이터 삽입, 수정, 삭제 시에 큰 비용을 유발할 수 있으므로 매우 중요한 원칙
3. BCNF와 3NF 분해 알고리즘
BCNF (Boyce-Codd Normal Form)
- 테스트 방법:
- 어떤 릴레이션 스키마 R이 BCNF를 만족하는지 확인하려면, 해당 스키마에 적용되는 모든 함수 종속성 에 대해 결정자 가 R의 슈퍼키(Superkey)인지 검사 - 주의할 점:
- 최초의 스키마를 검증할 때는 주어진 FD 집합 F만 확인해도 충분하지만, 스키마가 분해된 후에는 F의 전체 폐포()에 속하는 모든 FD를 고려
- 예를 들어 $F = {A \rightarrow B, B \rightarrow C}$가 주어졌을 때, $R(A, C, D)$라는 스키마는 F에 속한 FD만으로는 BCNF 위반이 없어 보이지만, $F^+$에 포함된 에 의해 BCNF를 위반하게 됨
- 분해 알고리즘:
- BCNF가 아닌 릴레이션을 발견하면, BCNF를 위반하는 FD()를 기준으로 $(\alpha \cup \beta)$와 두 개의 릴레이션으로 분해하는 과정을 반복
3NF (Third Normal Form)
- 특징:
- BCNF보다 조금 완화된 정규형으로, BCNF 분해 시 발생할 수 있는 '종속성 보존 실패' 문제를 해결하기 위해 사용
- 항상 무손실 조인과 종속성 보존을 만족하는 분해가 가능 - 분해 알고리즘: 3NF 분해는 다음 단계를 따름.
- 주어진 FD 집합의 정규형 커버()를 계산
- 에 있는 각 FD 에 대해, 하나의 릴레이션 스키마()를 생성
- 만들어진 릴레이션 중에 원래 스키마 R의 후보 키(Candidate Key)를 포함하는 릴레이션이 하나도 없다면, 후보 키만으로 구성된 릴레이션을 추가로 생성
- (선택) 다른 릴레이션에 완전히 포함되는 중복 릴레이션이 있다면 제거
'DATABASE DESIGN' 카테고리의 다른 글
| [데이터베이스 설계] 쿼리 처리(Query Processing) - A4 ~ A10 (0) | 2025.09.29 |
|---|---|
| [데이터베이스 설계] 쿼리 처리(Query Processing) - 비용 측정부터 선택 연산(A1-A3) (0) | 2025.09.24 |
| [데이터베이스 설계] 데이터베이스의 정규화(Normalization)란? ( 2 ) - BCNF 와 3NF (0) | 2025.09.17 |
| [데이터베이스 설계] 데이터베이스의 정규화(Normalization)란? ( 1 ) (0) | 2025.09.15 |
| [데이터베이스 설계] E-R 모델(관계 표현과 스키마 변환) (1) | 2025.09.10 |