부분 종속성(Partial Dependency)이란?
부분 종속성은 비주요 속성(non-prime attribute)이 복합 후보 키(candidate key) 전체가 아닌 일부에만 함수적으로 종속되는 현상을 말합니다. 쉽게 말해, 복합 키를 구성하는 속성 중 하나만으로도 특정 컬럼의 값이 결정될 수 있는 상태를 의미합니다.
이러한 부분 종속성은 데이터의 중복과 이상 현상(anomaly)을 유발하기 때문에, 정규화 과정에서 제2정규형(2NF)을 적용하여 반드시 제거해야 합니다.
용어 정리
- 주요 속성(Prime Attribute): 후보 키에 포함된 속성
- 비주요 속성(Non-prime Attribute): 어떤 후보 키에도 포함되지 않은 속성
예시로 이해하는 부분 종속성
다음 <StudentProject> 테이블을 살펴보겠습니다.
<StudentProject>
| StudentID | ProjectNo | StudentName | ProjectName |
| S01 | 199 | Katie | Geo Location |
| S02 | 120 | Ollie | Cluster Exploration |
위 테이블의 기본 키는 StudentID와 ProjectNo의 조합(복합 키)이며, 각 속성의 의미는 다음과 같습니다.
| StudentID = 학생의 고유 식별자 StudentName = 학생의 이름 ProjectNo = 프로젝트의 고유 번호 ProjectName = 프로젝트의 이름 |
부분 종속성이 발생하는 이유
비주요 속성인 StudentName과 ProjectName이 후보 키의 일부에만 종속되어 있는지 확인해 보겠습니다.
- StudentName은 복합 키 전체가 아니라 StudentID 하나만으로 결정할 수 있습니다. → 부분 종속 발생
- ProjectName 역시 ProjectNo 하나만으로 결정할 수 있습니다. → 부분 종속 발생
따라서 <StudentProject> 관계는 정규화 규칙 중 2NF를 위반하며, 좋지 않은 데이터베이스 설계로 판단됩니다. 이런 구조에서는 동일한 학생 이름이나 프로젝트 이름이 여러 행에 걸쳐 중복 저장되어 수정·삽입·삭제 시 이상 현상이 발생할 수 있습니다.
테이블 분해를 통한 부분 종속성 제거
부분 종속성과 2NF 위반 문제를 해결하려면 테이블을 두 개로 분해(decompose)해야 합니다.
<StudentInfo>
| StudentID | ProjectNo | StudentName |
| S01 | 199 | Katie |
| S02 | 120 | Ollie |
<ProjectInfo>
| ProjectNo | ProjectName |
| 199 | Geo Location |
| 120 | Cluster Exploration |
이제 모든 비주요 속성이 기본 키 전체에 완전하게 종속되므로, 두 관계는 모두 제2정규형(2NF)을 만족하게 됩니다. 이처럼 부분 종속성을 제거하면 데이터 중복이 줄어들고, 데이터베이스의 무결성과 유지보수성이 크게 향상됩니다.