함수 종속

위키백과 ― 우리 모두의 백과사전.

함수 종속(영어: functional dependency)이란 데이터베이스릴레이션(영어: relation)에서 두 개의 애트리뷰트(영어: attribute) 집합 간 제약의 일종이다.

어떤 릴레이션 R에서, XY를 각각 R의 애트리뷰트 집합의 부분 집합이라 하자. 애트리뷰트 X의 값 각각에 대해 시간에 관계없이 항상 애트리뷰트 Y의 값이 오직 하나만 연관되어 있을 때 YX함수 종속이라 하고, XY라고 표기한다. [1]

다시 말해, R 내의 애트리뷰트의 집합 X와 역시 R 내에 있는 또 다른 애트리뷰트의 집합 Y에 대해, 각각의 X 값에 대해 최대 한 개의 Y 값에 연관되어 있을 때, 애트리뷰트의 집합 X함수 결정(영어: to functionally determine)하다고 한다.

X결정자(영어: determinant set)이라 하고, Y종속자(영어: dependent attribute)라고 한다. [1]

목차

[편집] 더 자세한 설명

튜플이 주어지고, X 애트리뷰트의 값이 주어지면, Y 애트리뷰트의 값을 구할 수 있다. 간단히 적어서, X 와 Y가 R의 애트리뷰트 집합의 부분 집합이면, X → Y 라는 표기는, X가 각각의 Y 멤버를 함수적으로 결정한다는 뜻이다. (함수 종속에서 "함수"라는 것은 식별 함수를 말한다.)

후보 키는 릴레이션 내의 모든 애트리뷰트를 함수적으로 결정하는 최소한의 집합이다.

만약 Y 가 X의 부분 집합이면, 함수 종속 FD:X\to Y는, "자명하다"고 일컫는다.

함수 종속을 찾아내는 것은, 관계형 모델 하의 데이터베이스를 설계한다든지, 데이터베이스 정규화, 데이터베이스 비정규화를 한다든지 할 때, 수행하는 매우 중요한 과정 중 하나이다. 함수 종속은 유저 도메인에 맞지 않은 가능한 한 많은 데이터를 제거 하기 위한 제약을 생성하기 위해 애트리뷰트 도메인과 함께 선택되어진다.

예를 들어 보자. 차량과 엔진 배기량을 추적 관리하는 시스템을 설계한다고 가정하자. 각 차량에는 차량별 고유한 차량 식별 번호(VIN)을 부여한다. 그러면, "VIN → 배기량" 이라고 적을 수 있다. 차량 한 대에는 배기량 하나만 있는 것이 맞는 말이기 때문이다. (이 예제에서는 차량에 엔진이 하나만 달려 있다고 가정한다.) 그러나, "배기량 → VIN"이라고 적는 것은 틀린 것이다. 같은 배기량을 가진 여러 대의 차가 있을 수 있기 때문이다.

함수 종속은 애트리뷰 "배기량"이 후보 키 "VIN"과 함께 하나의 릴레이션 안에 배치될 수 있다는 가능성을 말해 주고 있다. 그러나 이러한 하나의 릴레이션 안에 배치되는 것이 항상 알맞은 일은 아니다. 예를 들어 함수 종속은 이행적(transitive) 함수 종속의 결과로 나타날 수도 있다.

VIN → 차량모델, 차량모델→차량배기량

위와 같은 경우 이행적 함수 종속이다. [1]이 경우 보통의 정규화된 관계가 성립되지 않는다.

[편집] 축약 불가의 함수 종속 집합

어떤 함수 종속 집합 S가 다음 세 가지 조건을 만족하면 축약 불가하다고 일컫는다.

  1. 함수 종속 집합 S의 우항 애트리뷰트 집합이 각각 오직 하나의 애트리뷰트만 가진다.
  2. 함수 종속 집합 S의 좌항 애트리뷰트 집합이 축약 불가하다. 이 말은, 좌항의 집합에서 어느 하나의 애트리뷰트라도 빼 버리면 S의 내용이 바뀔 것이라는 것을 의미한다. (S가 가지고 있는 정보가 손실될 것이라는 뜻이다.).
  3. 함수 종속을 하나라도 삭제하면 S 의 내용이 바뀐다.

위와 같은 성질을 갖는 함수 종속들의 집합을 일컬어 연쇄적(canonical)이라고 한다.

[편집] 함수 종속의 성질

릴레이션 R에 대해 X,Y,Z라는 애트리뷰트의 집합이 주어졌다고 가정하자. 우리는 여러 가지 함수종속의 성질을 유도해 낼 수 있다. 그 중 유명한 것은 암스트롱의 공리이다. 이것은 데이터베이스 정규화에 쓰인다:

  • 부분집합의 성질(Subset Property) (반사의 공리): Y가 X의 부분 집합이면, X → Y이다.
  • 확대(Augmentation) (확대의 공리): 만약 X → Y이면, XZ → YZ이다.
  • 이행성(Transitivity) (이행의 공리): 만약 X → Y이고 Y → Z이면 X → Z이다.

이 공리에 의해 다음과 같은 부수적 법칙을 유도해 낼 수 있다.

  • 합집합의 성질(Union): If X → Y이고 X → Z이면 X → YZ이다.
  • 분해의 성질(Decomposition): X → YZ이면 X → Y이고 X → Z이다.
  • 유사 이행적 성질(Pseudotransivity): 만약 X → Y이고 YZ → W이면, XZ → W이다.


[편집] 함께 보기

[편집] 주석

  1. 1.0 1.1 1.2 이석호 [1995-1-25] (2005-8-15). 《데이터베이스 시스템》. 정익사, 218,2192007-6-1에 확인.