함수 종속성
함수 종속성이란?
- 함수 종속성(Function Dependency)은 데이터베이스에서 특정 컬럼의 값이 다른 컬럼의 값을 고유하게 결정짓는 관계
- 어떤 테이블에서 속성 A와 B에 대하여, A값에 의해 B값이 유일하게 정해지는 관계
B는 A에 함수적 종속 or A가 B를 함수적으로 결정 , A->B
A->B에서 A는 결정자, B는 종속자라고함
함수 종속성 종류
| 학번(PK) | 과목코드(PK) | 성적 | 이름 | 학과ID | 학과명 |
|---|
| 101 | CS101 | A | 홍길동 | CS | 컴퓨터공학과 |
| 101 | CS102 | B | 홍길동 | CS | 컴퓨터공학과 |
| 102 | CS101 | A | 이순신 | EE | 전기전자과 |
| 102 | CS102 | C | 이순신 | EE | 전기전자과 |
1. 완전 함수적 종속
- 기본키의 모든 속성에 어떤 속성이
완전하게 종속된 경우
- 즉, 기본키의 모든 구성 요소가 함께 있어야만 해당 속성의 값을 고유하게 결정할 수 있음
- 기본키의 일부만으로는 종속 관계가 성립되지 않음
예시: (학번, 과목코드) → 성적
- 성적은 학번과 과목코드 모두가 필요하여 고유하게 결정
2. 부분 함수적 종속
- 기본키의 일부 속성에 어떤 속성이 종속된 경우
예시: 학번 → 이름
- 이름은 학번만으로도 고유하게 결정됨
- 즉, 기본키 (학번, 과목코드) 중 일부인 학번에만 종속됨
문제점:
- 기본키의 일부 속성(학번)만으로 이름이 결정되는 경우, 중복 데이터가 발생할 수 있음
- 발생 가능한 이상 현상:
- 삽입 이상: 특정 학생의 이름을 추가하려면 과목 정보가 없어도 과목코드에 임의의 값을 넣어야 함
- 갱신 이상: 한 학생의 이름을 변경할 때 모든 관련 행을 수정하지 않으면 데이터 불일치 발생
- 삭제 이상: 특정 과목 데이터를 삭제하면, 학생의 이름 정보도 함께 삭제될 수 있음
3. 이행적 함수적 종속
- 어떤 속성 A가 B를 결정하고, B가 C를 결정할때, A → C로 간접적으로 종속된 경우
예시: 학번 → 학과ID, 학과ID → 학과명
문제점:
- 학번이 학과명에 간접적으로 종속되는 경우, 중복 데이터가 발생할 수 있음
- 발생 가능한 이상 현상:
- 삽입 이상: 새로운 학과를 추가하려면 학생 정보도 함께 추가해야 함
- 갱신 이상: 학과명이 변경되었을 때 모든 행을 수정하지 않으면 데이터 불일치 발생
- 삭제 이상: 특정 학번의 데이터를 삭제하면 학과 정보까지 삭제될 수 있음
다음 포스트에서는 정규화를 통해 이상현상을 초래하는 부분 함수적 종속과 이행적 함수적 종속 을 해결