by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

함수 종속




1. 함수 종속(Functional Dependency)

1) 데이터 종속성(Data Dependency)
  • 관계형 모델을 설계할 때 가장 중요한 요소
  • 데이터 종속성에는 3가지 종속이 존재하며, 그 중 대표적인 종속은 함수 종속임
    • 함수 종속(Functional Dependency)
    • 다가 종속(Multivalued Dependency)
    • 조인 종속(Join Dependency)
  • 함수 종속은 엔터티내에 존재하는 속성 간의 종속성을 의미함
    • 엔터티 내 A 속성의 값이 B 속성의 값을 유일하게 식별할 수 있다면 B 속성은 A 속성에 함수적으로 종속되었음을 의미
    • 속성 간 종속성을 규명해 집합을 분리하므로, 속성과 엔터티를 정의하고 관계를 파악하는 데 절대적 역할
    • 이를 기반으로 정규화 과정을 거치면 업무 요건을 만족하면서 엔터티 주제에 맞도록 속성이 배치됨

2. 결정자(Determinant) / 종속자(Dependent)

  • 결정자 / 종속자
    • 결정자 : 속성 간의 종속성을 규명할 때 기준이 되는 값
    • 종속자 : 결정자의 값에 의해 정해지는 값
    • 속성 Y가 속성X에 의해 함수적으로 종속된다는 말은 속성 X의 값을 이용해 속성 Y의 값을 유일하게 식별할 수 있다는 의미
  • 결정자 X의 값은 반드시 하나의 Y값과 연관됨
    • X 값에 의존하는 Y 값은 하나뿐이지 다른 Y 값이 있을 수 없음
    • 기호
      • X → Y
      • Y = F(X)
      • X : 결정자(Determinant), Y : 종속자(Dependent)
  • 결정자 사례
    • 주민등록번호, 이름, 휴대전화번호, 주소로 이루어진 엔터티일 경우 주민등록번호는 결정자
    • 주민등록번호를 알 경우 나머지들은 모두 유일하게 식별이 가능함
  • 종속자 사례
    • 이름으로 주민등록번호가 고유하게 결정되지 않으므로 종속자

3. 함수 종속 사례

  • 주문번호, 주문일자, 고객번호, 상품코드, 고객명, 상품명으로 구성된 엔터티에서 함수 종속(FD) 도출
    • FD1 : 주문번호 → 주문일자
    • FD2 : 주문번호 → 고객번호
    • FD3 : 주문번호 → 상품코드
    • FD4 : 고객번호 → 고객명
    • FD5 : 상품코드 → 상품명
  • X → Y와 같이 속성 간의 종속 관계 발생 시, X와 Y는 항상 함께 존재해야 하며, 결정자는 엔터티의 주 식별자가 됨
    • 엔터티_1 : #주문번호, 주문일자, 고객번호, 상품코드
    • 엔터티_2 : #고객번호, 고객명
    • 엔터티_3 : #상품코드, 상품명
  • 다른 방식 표현
    • FD6 : 주문번호 → (주문일자, 고객번호, 상품코드)
    • FD7 : (주문번호, 상품코드) → 주문수량
  • FD6, FD7 역 사례
    • FD6은 FD1, FD2, FD3으로 분리 가능
    • FD7은 FD8, FD9로 분리 불가
  • 직접 / 간접 속성
    • X → Y → Z 종속이 있을 경우, Z는 X에 간접종속이 되는데 이 경우 X, Y, Z를 하나의 엔터티에 포함시키면 안되고, X, Y를 엔터티_1, Y, Z를 엔터티_2로 도출해야 함
    • X → Y → Z 와 같은 종속을 이행 종속(Transitive Dependency)이라 하며, 3정규형과 관련된 종속
    • 함수종속은 일반적으로 직접 종속을 의미함

4. 폐포(Closure)

  • 정규화는 함수 종속의 결정자가 키가 되도록 엔터티를 분해하는 과정
    • 키가 아닌 모든 속성이 키에 직접 종속되도록 분해하는 것이며, 이로 인해 키와 함수 종속은 밀접한 관련이 있음
  • 폐포(Closure)
    • X의 폐포는 X에 종속됐다고 추론할 수 있는 모든 속성의 집합을 의미함
    • X → Y, Z 라면 X의 폐포는 X, Y, Z라고 함
      • 기호 : X+ = X, Y, Z
  • 폐포 사례
    • 엔터티 R에 {A, B, C, D, E| 아래와 같은 함수 종속이 있을 경우
      • A → C
      • B → D
      • A, B → E
    • 폐포
      • A+ = A, C
      • B+ = B, D
      • (A, B)+ = A, B, C, D, E
    • 폐포 (A, B)+가 엔터티 R의 모든 속성을 가지고 있으므로, R 엔터티의 키는 A, B가 됨
  • 종속성 추론 규칙
    • Y ⊆ X 이면 X → Y 성립함
    • X → Y 이면 XZ → YZ 성립함
    • X → Y 이고, Y → Z 이면 X → Z 성립함
    • X → YZ 이면, X → Y 이면 X → Z 성립함
    • X → Y 이고, X → Z 이면 X → YZ 성립함
    • X → Y 이고, YZ → W 이면 XZ → W 성립함
  • 함수 종속을 활용한 정규형 도출 방법
    • 방법_1 : 엔터티에 존재하는 모든 함수 종속을 구하면 각 FD가 정규형 엔터티가 됨
    • 방법_2 : 엔터티의 키를 먼저 도출한 후, 2/3정규화를 수행해 더는 분해될 수 없는 엔터티를 만드는 것
      • 방법_2의 경우 키를 도출하려면 폐포를 알아야 하고, 폐포를 구하려면 엔터티에 존재하는 모든 함수 종속을 알아야 하므로, 방법_1과 같아짐
엔터티는 정규화에 의해 생성되고, 정규화는 함수 종속에 의해 생성되며, 함수 종속은 결정자가 없이는 존재할 수 없음

문서에 대하여

  • 최초작성자 : 강정식
  • 최초작성일 : 2014년 03월 29일
  • 이 문서는 구루비 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
  • 이 문서의 내용은 Open Made에서 출간한 '관계형 데이터 모델링 프리미엄 가이드'를 참고하였습니다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.