본문으로 이동

함수 종속

위키백과, 우리 모두의 백과사전.
A.TedBot (토론 | 기여)님의 2024년 5월 5일 (일) 22:45 판 (봇: 분류 앞 공백 정리)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

함수 종속(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:는, "자명하다"고 일컫는다.

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

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

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

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

위와 같은 경우 이행적(Transitivity) 함수 종속이다.[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) 암스트롱의 공리는 정당(sound)하며, 완전(complete)하다. 즉, 주어진 FD들의 집합 F로부터 반드시 F+에 속하는 FD들만 생성할 수 있기 때문에 정당하다. 또한 위의 세가지 법칙을 반복해서 적용하면 폐포(closure) F+에 속하는 모든 FD들을 생성할 수 있으므로 완전하다.

2) 이 법칙은 다음과 같은 성질을 갖는다.

  • 건전하다(sound) : 이 규칙들을 잘못된 함수 종속을 생성하지 않는다.
  • 완전하다(complete) : 이 규칙은 주어진 함수 종속의 집합 F에 대해서 모든 F+를 생성할 수 있다.

같이 보기

[편집]

각주

[편집]
  1. 이석호 (2005년 8월 15일). 《데이터베이스 시스템》. 정익사. 218,219쪽.