예를 들어, 다음과 같은 인플루이(Employees) 테이블을 살펴봅시다:
| 인플루이 아이디 | 이름 | 생일 | 직군 | 연봉 | 부서 ID |
|---|---|---|---|---|---|
| 1 | 메리 | 1990-01-01 | 개발자 | 6000 | 101 |
| 2 | 진호 | 1985-06-12 | 디자이너 | 5500 | 102 |
| ... | ... | ... | ... | ... | ... |
여기서 인플루이 아이디는 각 직원마다 유일하게 부여된 ID로, 이를 기준으로 이름, 생일, 직군, 연봉, 부서 ID 등의 정보가 결정됩니다. 즉, 인플루이 아이디가 다른 모든 컬럼의 값을 결정하므로, 이 관계를 함수 종속이라고 합니다.
기호로는 다음과 같이 표현할 수 있습니다:
인플루이 아이디 → (이름, 생일, 직군, 연봉, 부서 ID)
이 기호는 "인플루이 아이디가 이름, 생일, 직군, 연봉, 부서 ID를 결정한다"는 의미입니다.
함수 종속을 파악하려면 테이블의 스키마(구조)를 분석해야 합니다. 테이블에 어떤 어트리뷰트가 포함되어 있는지, 각 어트리뷰트가 어떤 의미를 가지는지를 이해하는 것이 중요합니다.
예를 들어, 다음과 같은 테이블이 있다고 해봅시다:
| 이름 | 생일 |
|---|---|
| 메리 | 1990-01-01 |
| 진호 | 1985-06-12 |
이 테이블에서 이름과 생일이 1:1로 대응되므로, 이름에 따라 생일이 결정된다고 생각할 수 있습니다. 하지만 이는 잘못된 결론입니다. 동명이인이 존재할 수 있기 때문에 이름이 같더라도 생일이 다를 수 있습니다. 따라서 이름과 생일 사이에는 함수 종속이 존재하지 않습니다.
이처럼 함수 종속은 단순히 데이터의 현재 상태만으로 판단할 수 없습니다. 테이블의 스키마와 의미를 바탕으로 함수 종속을 정의해야 합니다.
함수 종속의 예를 몇 가지 살펴보겠습니다:
이러한 함수 종속 관계를 통해 테이블 내에서 특정 값을 결정할 수 있습니다.
함수 종속에는 여러 가지 유형이 있습니다:
함수 종속은 데이터베이스 설계에서 핵심적인 개념입니다. 이를 잘 이해하면 테이블을 효율적으로 설계할 수 있으며, 데이터베이스의 무결성을 유지하고 데이터 중복을 최소화할 수 있습니다.
https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe