Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

데이터베이스 기능 종속성(Functional Dependency) 개념부터 정규화까지 쉽게 이해하기

데이터베이스에서 기능 종속성(Functional Dependency)은 릴레이션(테이블) 내 속성들 사이에 존재하는 제약 관계를 의미합니다. 하나의 속성이 다른 속성의 값을 고유하게 결정할 때 두 속성 사이에 기능 종속성이 성립한다고 말합니다.

기능 종속성은 일반적으로 A → B 형태로 표기하며, 이는 "B는 A에 기능적으로 종속된다"는 뜻입니다. 이러한 관계를 데이터베이스 종속성(database dependency)이라고도 부릅니다.

즉, A → B 관계에서 A는 B의 값을 결정하는 결정자(Determinant) 역할을 하고, B는 A에 의존하여 값이 정해지는 종속자가 됩니다.

데이터베이스 설계에서 기능 종속성이 중요한 이유

기능 종속성은 데이터의 유효성과 무결성을 보장하는 핵심 도구입니다. 예시를 통해 살펴보겠습니다. 직원 정보를 담은 Employees 테이블에 주민등록번호(SSN), 이름, 생년월일, 주소 등의 속성이 있다고 가정해 봅니다.

주민등록번호는 모든 사람에게 고유한 값이지만, 이름·생년월일·주소는 여러 사람이 같은 값을 가질 수 있습니다. 따라서 주민등록번호(SSN)는 이름, 생년월일, 주소의 값을 유일하게 결정할 수 있으며, 다음과 같이 표현할 수 있습니다.

SSN → name, date of birth, address

이처럼 이름, 생년월일, 주소는 SSN에 기능적으로 종속됩니다. 반대로 name → SSN이라는 명제는 성립하지 않습니다. 동명이인은 존재할 수 있지만, 서로 다른 두 사람이 같은 주민등록번호를 가질 수는 없기 때문입니다.

좀 더 구체적으로 설명하면, SSN 속성의 값을 알면 이름·생년월일·주소의 값을 찾아낼 수 있습니다. 하지만 이름만 알고 있다면 해당하는 SSN을 특정할 수 없습니다. 이것이 바로 방향성이 있는 종속 관계의 본질입니다.

복수 속성으로 구성된 결정자

기능 종속성의 좌변(결정자)에는 두 개 이상의 속성이 포함될 수도 있습니다. 여러 지점을 운영하는 회사를 예로 들어 보겠습니다. Employee 테이블에 직원(employee), 직급(title), 부서(department), 근무지(location), 매니저(manager) 속성이 있다고 합시다.

각 직원은 자신이 근무하는 지점을 결정하므로 다음과 같은 종속 관계가 성립합니다.

employee → location

그러나 한 지점에 매니저가 여러 명일 수 있다면, 직원과 부서를 함께 알아야 매니저를 특정할 수 있습니다. 이 경우 복합 속성을 사용한 종속 관계는 다음과 같습니다.

employee, department → manager

기능 종속성과 데이터베이스 정규화

기능 종속성은 데이터베이스 정규화(Normalization)의 이론적 기반이 됩니다. 정규화는 데이터 무결성을 보장하고 중복 데이터(데이터 redundancy)를 최소화하기 위해 테이블을 체계적으로 구조화하는 과정입니다.

정규화가 제대로 이루어지지 않으면 데이터베이스에 저장된 데이터가 정확하고 신뢰할 수 있는지 보장할 수 없습니다. 기능 종속성을 분석하면 어떤 속성이 후보 키가 되어야 하는지, 테이블을 어떻게 분해해야 하는지 판단할 수 있으며, 이를 통해 제1정규형부터 BCNF에 이르는 정규형 단계를 적용하게 됩니다.

결론적으로 기능 종속성은 단순한 이론적 개념이 아니라, 잘못된 데이터 삽입·수정·삭제 이상(anomaly)을 방지하고 견고한 데이터베이스 스키마를 설계하기 위한 필수적인 분석 도구입니다.