0. 서론
- 데이터베이스 설계 과정의 논리적 설계 단계에서는 데이터 중복을 제거하는 것이 중요한 목표
- 데이터 중복의 제거는 테이블의 분해를 통해 이루어짐
- 올바른 테이블 분해를 위해서는 함수적 종속과 정규화 이론에 대한 이해가 필요함
- 후술할 내용은 모두 테이블 R에서 필드 집합 X, Y, Z가 있다고 가정함
1. 함수적 종속
함수적 종속 (Functional Dependency)
X의 값이 동일한 임의의 레코드 쌍인 t1과 t2에 대해 Y의 값도 동일하다면,
Y는 X에 함수적 종속된다 라고 말하며 X → Y 와 같이 표기함
- 무결성 제약의 한 종류로서, 하나의 테이블 내에서 필드 간의 관계로 정의됨
- "Y는 X에 함수적으로 종속된다"라는 표현은 역으로 "X가 Y를 함수적으로 결정한다"를 의미함
- 이때 X를 결정자 (Determinant)라고 하고, Y를 종속자 (Dependent)라고 함
2. 함수적 종속의 예시
stu_id | resident_id | name | year | address |
1871075 | 990328 | 김현근 | 4 | 서울시 동작구 |
- 레코드의 resident_id를 알면, name을 찾아낼 수 있음
- 즉, resident_id → name
3. 함수적 종속의 특성
포함 규칙
X ⊃ Y이면, X → Y가 항상 성립
X → (Y, Z)이면, X → Y 와 X → Z 가 항상 성립함
- 그러나 (Y, Z) → X 가 성립된다고 Y → X 또는 Z → X가 성립하는 것은 아님
합성 규칙
X → Y 와 X → Z가 성립하면, X → (Y, Z) 가 항상 성립함
이행 규칙
X → Y 와 Y → Z가 성립하면, X → Z 가 항상 성립
- 이러한 함수적 종속을 이행적(Transitive) 함수적 종속이라고 하며, Z는 X에 이행 종속된다 라고 함
4. 함수적 종속과 키의 관계
- 하나의 테이블에서 키는 나머지 모든 필드를 함수적으로 결정 (슈퍼키 포함)
- 즉, 함수적 종속은 수퍼키의 개념을 일반화한 것
5. 함수적 종속의 유지 방법
- 함수적 종속을 유지하는 데 키의 개념이 이를 일부 해결함
- 그러나 DBMS는 기본적으로 결정자가 기본키가 아닌 함수적 종속에 대해서는 이들을 항상 만족시킬 만한 수단을 제공하지 않음
- 결론적으로, 가장 좋은 방법은 데이터베이스를 설계할 때 이러한 문제가 발생하지 않도록 테이블을 정의하는 것
- 이러한 과정을 정규화라고 함
Reference
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=104610433