함수 종속
함수 종속(functional dependency)이란 데이터베이스의 릴레이션(relation)에서 두 개의 애트리뷰트(attribute) 집합 간 제약의 일종이다.
어떤 릴레이션 R에서, X와 Y를 각각 R의 애트리뷰트 집합의 부분 집합이라 하자. 애트리뷰트 X의 값 각각에 대해 시간에 관계없이 항상 애트리뷰트 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수 종속이라 하고, X → Y라고 표기한다. [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가 다음 세 가지 조건을 만족하면 축약 불가하다고 일컫는다.
- 함수 종속 집합 S의 우항 애트리뷰트 집합이 각각 오직 하나의 애트리뷰트만 가진다.
- 함수 종속 집합 S의 좌항 애트리뷰트 집합이 축약 불가하다. 이 말은, 좌항의 집합에서 어느 하나의 애트리뷰트라도 빼 버리면 S의 내용이 바뀔 것이라는 것을 의미한다. (S가 가지고 있는 정보가 손실될 것이라는 뜻이다.).
- 함수 종속을 하나라도 삭제하면 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+를 생성할 수 있다.
같이 보기
[편집]- 다치 종속 (MVD)
- 관계형 데이터베이스 (Relational Database)
- 데이터 모델링