이행적 종속성(Transitive Dependency)은 데이터베이스 정규화 과정에서 중요한 개념 중 하나로, 제3정규화(3NF)를 적용할 때 제거해야 하는 종속성입니다. 이를 더 명확히 이해하기 위해 다른 예시를 통해 설명하겠습니다. ### 이행적 종속성의 정의 이행적 종속성은 다음과 같이 정의됩니다: - A → B (A가 B를 결정) - B → C (B가 C를 결정) 이 경우, A가 C를 직접적으로 결정하는 것은 아니지만, A가 B를 통해 C를 결정하게 됩니다. 이때, C는 A에 이행적으로 종속되었다고 합니다. 제3정규화는 이러한 이행적 종속성을 제거하여 데이터베이스 구조를 더욱 개선하는 것입니다. ### 이행적 종속성 예시 #### 예시 데이터: 학생 성적 관리 시스템 다음과 같은 테이블이 있다고 가정해보겠습니다. | StudentID | StudentName | Department | DepartmentHead | |-----------|-------------|--------------|----------------| | 101 | Alice | Computer Sci | Dr. Smith | | 102 | Bob | Math | Dr. Johnson | | 103 | Charlie | Physics | Dr. Williams | #### 이 테이블의 종속성 분석 1. `StudentID`는 **학생 이름**(`StudentName`)과 **학과**(`Department`)를 결정합니다. - 즉, `StudentID → StudentName`, `StudentID → Department` 2. **학과**(`Department`)는 **학과장**(`DepartmentHead`)을 결정합니다. - 즉, `Department → DepartmentHead` 이제 이 종속성을 종합하면: - `StudentID`가 `Department`를 결정하고, `Department`가 `DepartmentHead`를 결정하므로, `StudentID`는 `DepartmentHead`를 이행적으로 결정하게 됩니다. 즉, `StudentID → Department` → `DepartmentHead`가 됩니다. 여기서 `DepartmentHead`는 `StudentID`에 이행적으로 종속되어 있습니다. #### 이행적 종속성을 제거한 제3정규화 이행적 종속성을 제거하기 위해, 관련된 속성들을 분리해줍니다. 1. **Student** 테이블: - 학생 정보와 학과 정보를 담습니다. | StudentID | StudentName | Department | |-----------|-------------|--------------| | 101 | Alice | Computer Sci | | 102 | Bob | Math | | 103 | Charlie | Physics | 2. **Department** 테이블: - 학과 정보와 학과장 정보를 담습니다. | Department | DepartmentHead | |--------------|----------------| | Computer Sci | Dr. Smith | | Math | Dr. Johnson | | Physics | Dr. Williams | 이제 `DepartmentHead`는 `Department`에 종속되어 있으며, 더 이상 `StudentID`에 이행적으로 종속되지 않습니다. 이는 제3정규화를 충족시킨 상태입니다. ### 요약 이행적 종속성은 한 속성이 다른 속성을 통해 간접적으로 종속되는 것을 의미합니다. 이를 제거하기 위해 관련된 속성을 별도의 테이블로 분리하는 것이 제3정규화의 핵심입니다. 위의 예시에서 `DepartmentHead`가 이행적 종속성이기 때문에, 이를 분리하여 `Student`와 `Department` 테이블을 각각 생성하여 데이터베이스를 정규화했습니다. 이를 통해 데이터의 중복을 줄이고 데이터베이스의 무결성을 높일 수 있습니다.