목차
다음은 정규화에서 많이 활용되는 용어인 '함수적 종속' 에 관한 내용이다.
학습을 마친 후에는, 정규화를 학습할 수 있게 된다.
정규화 : https://webcodur.tistory.com/67
1. 함수적 종속 (Functional Dependency)
다음 테이블을 살펴보자
학생ID | 이름 |
1 | 홍길동 |
2 | 이순신 |
위 예에서 "학생ID"는 "이름"을 결정한다. '학생ID'가 1일 때, '이름'은 항상 '홍길동'이고, '학생ID'가 2일 때, '이름'은 항상 '이순신'이 된다.
수학의 함수에서는, 한 입력값(x)에 대해 정확히 하나의 출력값(y)이 결정된다. 마찬가지로, 데이터베이스에서 한 속성(또는 속성 집합)의 값이 다른 속성(또는 속성 집합)의 값을 유일하게 결정할 때, 이를 "함수적 종속"이라고 한다.
참고로 각각의 값을 데이터베이스상의 용어로 표현하면 다음과 같고,
- 결정하는 속성 (x): 결정자(determinant)
- 결정되는 속성 (y): 종속 속성(dependent attribute)
따라서 '학생ID'는 결정자, '이름'은 종속 속성이 된다.
이런 함수적 종속성은 데이터베이스 설계에서 데이터 무결성과 효율성을 보장하는 데 중요한 역할을 한다. 함수적 종속성을 정확히 파악하고 이를 바탕으로 테이블을 설계하면, 데이터 중복을 최소화하고 갱신 이상을 방지할 수 있다. 또한, 이를 통해 쿼리의 성능을 향상시키고, 데이터 관리의 복잡성을 줄일 수 있다.
함수적 종속성을 이해하고 이를 적절히 적용하는 것은 데이터베이스의 정규화 과정에서 특히 중요하다. 정규화는 데이터베이스의 구조를 조정하여 불필요한 중복을 제거하고, 데이터 무결성을 유지하기 위한 과정이며, 각 정규형의 기준이 되는 핵심적인 개념이 바로 함수적 종속성이다.
2. 완전 함수 종속 (Full Functional Dependency)
다음으로 살펴볼 것은 완전 함수 종속이다.
속성 집합 X = {학생ID, 과목ID}, Y = {성적}을 가정해보자.
학생ID | 과목ID | 성적 |
1 | 101 | 90 |
1 | 102 | 85 |
위 테이블에서, '성적' Y는 {학생ID, 과목ID}의 조합 X에 의해 결정된다. 학생들은 모두 과목별로 성적이 발생할 것이기 때문이다. 즉 {학생ID}만이나 {과목ID}만으로는 '성적'을 결정할 수 없고 '성적' Y는 X 그룹에 완전히 대응된다. 이러한 종속성은 데이터베이스에서 완전 함수적 종속이라고 표현하며, 복합 키를 포함하는 테이블에서 자주 볼 수 있다.
3. 부분 함수 종속 (Partial Functional Dependency)
다음으로 살펴볼 것은 부분 함수 종속이다.
속성 집합 X = {학생ID, 과목ID}, Y = {과목명}인 다음 예시 테이블을 살펴보자.
학생ID | 과목ID | 과목명 |
1 | 101 | 수학 |
1 | 102 | 영어 |
2 | 101 | 수학 |
2 | 102 | 영어 |
위 테이블에서, '과목명' Y는 {과목ID}, 즉 X의 일부분만으로 결정된다. {학생ID, 과목ID} 전체를 사용할 필요 없이, '과목ID'만으로도 '과목명'을 알 수 있다. 따라서, '과목명' Y는 X의 부분 집합인 {과목ID}에 부분 함수적으로 종속된다.
부분 함수 종속은 이렇게 복합 키 X의 전체가 아닌 일부만으로 속성 Y를 결정할 수 있는 경우를 말한다. 이러한 종속성은 X가 복합 키인 경우, 특정 속성들이 다른 속성들에 비해 더 강한 결정력을 가질 때 발생한다.
4. 이행 함수 종속 (Transitive Functional Dependency)
속성 집합 X = {학생ID}, Y = {학과ID}, Z = {학과명}을 살펴보자
학생ID | 학과ID | 학과명 |
1 | 101 | 컴퓨터공학 |
2 | 102 | 기계공학 |
여기서, '학생ID'(X)는 '학과ID'(Y)를 결정하고, '학과ID'(Y)는 '학과명'(Z)를 결정한다.
이행 함수 종속은 이렇게 셋 이상의 속성 X, Y, Z가 있을 때, 속성 X가 속성 Y를 결정하고, Y가 다시 Z를 결정하는 경우를 말한다. 이러한 종속성은 종종 데이터베이스 설계에서 불필요한 중복을 초래하며, 갱신 이상의 원인이 될 수 있다.
5. 기억하기
다음 도표를 통해 내용을 쉽게 기억할 수 있다.
함수적 종속 | 속성 X가 속성 Y를 유일하게 결정 | X -> Y |
완전 함수 종속 | 복합 키 X 전체가 속성 Y를 결정, X의 부분집합으로는 결정 불가 | X[A, B] -> Y |
부분 함수 종속 | 복합 키 X 일부가 속성 Y를 결정 | X[A, B], B -> Y |
이행 함수 종속 | 속성 X가 Y를 결정하고 Y가 다시 Z를 결정 | X -> Y -> Z |
'DBMS > SQL' 카테고리의 다른 글
[데이터베이스] SQL 치팅시트: DDL, DML, DCL 커맨드 목록 (0) | 2024.04.21 |
---|---|
[데이터베이스] 정규화(Normalization) (1NF - 5NF) (0) | 2024.04.15 |
[데이터베이스] DB용어 - 키 (슈퍼키, 후보키, 기본키, 대체키, 외래키) (1) | 2024.04.14 |
[데이터베이스] 무결성 제약 조건 (Integrity Constraints : IC) (0) | 2024.03.21 |
[Database] 트랜잭션과 ACID 속성 (0) | 2024.03.19 |