암스트롱 공리로 함수적 종속성을 추론하는 방법

암스트롱 공리의 기본·추가 추론 규칙과 함수적 종속성 폐포를 바탕으로 후보키 식별, 정규화, 스키마 분해에 적용하는 방법

2026-08-15 · 최초 발행 2025-08-10

함수적 종속성을 설계 판단으로 연결하는 규칙

정규화는 데이터 중복과 불일치를 줄이기 위한 관계형 데이터베이스 설계 절차다. 이때 어떤 속성이 다른 속성을 결정하는지, 그리고 주어진 종속성에서 무엇을 더 도출할 수 있는지가 핵심 판단 기준이 된다.

암스트롱 공리(Armstrong's Axioms)는 함수적 종속성(Functional Dependency)을 추론하는 규칙 집합이다. 1974년 윌리엄 암스트롱(William W. Armstrong)이 제안했으며, 관계 스키마에서 주어진 함수적 종속성 집합으로부터 논리적으로 도출 가능한 모든 함수적 종속성을 판단하는 완전하고 건전한(sound and complete) 체계를 제공한다.

완전성은 타당한 함수적 종속성을 모두 도출할 수 있다는 뜻이고, 건전성은 이 규칙으로 도출한 함수적 종속성이 모두 타당하다는 뜻이다. 후보키 식별, 정규형 검증, 스키마 분해는 모두 이 성질에 기대어 수행한다.

종속성에서 바로 출발하는 기본 공리

반사 규칙(Reflexivity)

Y ⊆ X이면 X → Y

Y가 속성 집합 X에 포함되면 X는 Y를 함수적으로 결정한다. 예를 들어 {학번, 이름}이 주어졌을 때 {학번}은 이미 그 안에 있으므로 결정할 수 있다.

증가 규칙(Augmentation)

X → Y이면 XZ → YZ (Z는 임의의 속성 집합)

X가 Y를 결정한다면, 양쪽에 임의의 속성 집합 Z를 함께 붙인 XZ → YZ도 성립한다. {학번} → {이름}이라면 {학번, 학과} → {이름, 학과}로 확장할 수 있다.

이행 규칙(Transitivity)

X → Y이고 Y → Z이면 X → Z

X가 Y를 결정하고 Y가 Z를 결정하면 X는 Z도 결정한다. {학번} → {이름}, {이름} → {전화번호}가 성립할 때 {학번} → {전화번호}를 얻는다.

기본 공리에서 따라오는 추론 규칙

합집합 규칙(Union)

X → Y이고 X → Z이면 X → YZ

X가 Y와 Z를 각각 결정하면 Y와 Z의 합집합도 결정한다. {학번} → {이름}{학번} → {학과}에서 {학번} → {이름, 학과}를 도출한다.

분해 규칙(Decomposition)

X → YZ이면 X → Y와 X → Z

X가 Y와 Z를 함께 결정한다면 각각에 대한 종속성으로 나눌 수 있다. {학번} → {이름, 학과}{학번} → {이름}{학번} → {학과}를 포함한다.

유사이행 규칙(Pseudotransitivity)

X → Y이고 WY → Z이면 WX → Z

X가 Y를 결정하고 W와 Y의 조합이 Z를 결정한다면, W와 X의 조합도 Z를 결정한다. {학번} → {이름}, {학과, 이름} → {교수}가 있다면 {학과, 학번} → {교수}가 성립한다.

학생 정보 스키마에서 후보키를 확인하는 과정

학생 정보 테이블에 다음 속성이 있다고 가정한다.

  • 학번(SID), 이름(Name), 학과(Dept), 학과전화(DeptPhone), 지도교수(Advisor)

함수적 종속성은 다음과 같다.

  • SID → Name, Dept
  • Dept → DeptPhone
  • SID → Advisor

이행 규칙으로 SID → DeptDept → DeptPhone에서 SID → DeptPhone을 얻는다. 이어 합집합 규칙을 적용하면 SID → Name, Dept, Advisor, DeptPhone이 도출된다. 따라서 학번(SID)은 모든 속성을 결정하는 후보키다.

주문 데이터에서 분해 기준을 찾는 방식

주문 테이블의 속성을 다음처럼 둔다.

  • 주문번호(OrderID), 고객ID(CustomerID), 고객이름(CustomerName), 제품코드(ProductCode), 제품명(ProductName), 가격(Price)

여기에는 다음 함수적 종속성이 있다.

  • OrderID, ProductCode → Price
  • CustomerID → CustomerName
  • ProductCode → ProductName

CustomerID → CustomerName에 증가 규칙을 적용하면 OrderID, CustomerID, ProductCode → OrderID, CustomerName, ProductCode가 된다. ProductCode → ProductName 역시 OrderID, ProductCode → OrderID, ProductName으로 확장할 수 있다.

이 종속성을 기준으로 주문, 고객, 제품 정보를 분리할 수 있다.

  • 주문(OrderID, CustomerID, ProductCode, Price)
  • 고객(CustomerID, CustomerName)
  • 제품(ProductCode, ProductName)

폐포 계산으로 도출 가능한 속성을 확인한다

함수적 종속성 집합 F의 폐포(closure)는 F에서 암스트롱 공리를 사용해 얻을 수 있는 모든 함수적 종속성 집합이며 F⁺로 표기한다.

속성 집합 X의 폐포 X⁺는 X로부터 함수적으로 결정되는 모든 속성의 집합이다. 계산 절차는 다음과 같다.

X⁺ = X
반복:
  변화가 없을 때까지:
    F의 각 함수적 종속성 Y → Z에 대해:
      만약 Y ⊆ X⁺이면, X⁺ = X⁺ ∪ Z

폐포를 구하면 후보키 판별, 함수적 종속성 검증, 스키마 분해를 효율적으로 수행할 수 있다.

정규화 단계에서 종속성을 검증하는 흐름

함수적 종속성 식별암스트롱 공리를 통한 종속성분석후보키 식별정규형 검증정규화 과정스키마 분해최종 데이터베이스 설계

정규화에서는 함수적 종속성을 충분히 분석한 뒤 각 단계의 위반 요소를 찾는다. 제1정규형(1NF)에서 제2정규형(2NF)으로 갈 때는 부분 함수적 종속성을 식별해 제거한다. 제2정규형(2NF)에서 제3정규형(3NF)으로 갈 때는 이행적 함수적 종속성을 식별해 제거한다. 제3정규형(3NF)에서 BCNF로 분해할 때는 모든 결정자가 후보키가 되도록 한다.

스키마 운영에서의 의미

함수적 종속성을 정확히 분석하면 데이터 중복과 불일치를 방지해 데이터 무결성을 지킬 수 있다. 적절한 정규화는 저장 공간을 효율화하고 갱신 이상을 막는 데도 연결된다.

스키마 변경 시에는 변경의 영향을 분석하는 근거가 되며, 폐포 계산을 통해 후보키를 확인하고 종속성 보존을 검증할 수 있다. 데이터 품질 규칙과 무결성 제약조건을 정의하는 이론적 기반이 되어 데이터 일관성 문제와 갱신 이상을 사전에 방지하는 데 도움이 된다. 수백, 수천 개의 테이블과 속성이 존재하는 대규모 데이터베이스 시스템에서는 이런 분석이 필수적이다.

빅데이터 환경과 NoSQL 데이터베이스가 등장한 뒤에도 암스트롱 공리의 관점은 데이터 모델링의 기본 원칙으로 남아 있다. 데이터 품질 관리와 데이터 거버넌스에서는 데이터의 논리적 일관성을 검증하는 데 활용된다.

암스트롱 공리함수적 종속성데이터베이스 정규화관계형 데이터베이스폐포