[DB] 함수 종속

안녕하·2023년 11월 27일
0

데이터베이스

목록 보기
18/21

함수 종속 Functional Dependency

  • 속성들의 관련성을 함수적 종속성이라고 한다
  • 정규화는 이상현상이 발생하지 않도록 릴레이션을 분해하는 과정
    • 관련 있는 속성들로만 릴레이션을 구성해야 한다
  • 보통 1개의 릴레이션에 1개의 함수적 종속성이 존재하도록 분해한다



함수 종속 정의

  • 테이블 R에 있는 속성들의 부분집합 X, Y
  • X → Y
    • X의 값이 주어지면 항상 Y 값을 결정할 경우, Y는 X에 함수 종속
    • X: 결정자, 상위 집합/ Y: 종속자, 하위 집합
  • cusotmer_id → name
    • 고객 아이디가 하나일 경우, 고객 아이디는 고객 이름을 결정한다
    • 고객 아이디는 결정자, 고객 이름은 종속자
  • customer_id → membership_level
  • customer_id → (name, membership_level)

함수 종속 관계 판단 시 주의점

  • 릴레이션에 포함된 속성 값으로 판단하면 안 됨
    • 릴레이션의 데이터는 계속 변하기 때문
  • 속성 값이 아닌 속성 특성을 이용하여 판단해야 한다

  • 기본키와 후보키는 튜플을 유일하게 구별하므로 항상 결정자

  • 기본키와 후보키가 아니더라도 결정자가 될 수 있음




함수 종속 종류


1. 부분 함수 종속

  • 릴레이션의 기본키가 복합키일 경우 기본키 일부에 종속된 경우
  • event (customer_id, event_id, winning_status, membership_level, discount)

함수 종속 관계

  • (customer_id, event_id) → winning_status
  • customer_id → membership_level
  • membership_level → discount
  • customer_id → discount


2. 완전 함수 종속

  • 릴레이션의 속성들이 기본키에만 종속되며, 기본키가 복합키일 경우 모든 속성이 기본키의 부분집합에 종속된 경우
  • event (customer_id, event_id, winning_status)
  • customer (customer_id, membership_level)
  • membership (membership_level, discount)

함수 종속 관계

  • (customer_id, event_id) → winning_status
  • customer_id → membership_level
  • membership_level → discount


3. 이행적 함수 종속 transitive FD

  • 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z

  • X→Y, Y→Z 면 X→Z가 성립한다. 이때, 속성 집합 Z가 속성 집합 X에 이행적으로 함수 종속

  • event (customer_id, event_id, winning_status, membership_level, discount)


함수 종속 관계

  • customer_id → membership_level
  • membership_level → discount
  • customer_id → discount



출처: 데이터베이스 개론

profile
세요

0개의 댓글