1.데이터 종속의 종류
- 함수 종속(Functional Dependency)
- 다가 종속(Multivalued Dependency)
- 조인 종속(Join Dependency)
2.함수 종속의 정의
- 릴레이션 내에 존재하는 속성 간의 종속성의 의미
- 대표속성(식별자)과 나머지 속성 사이의 연관 관계가 함수 종속
- 릴레에션에서 A 속성의 값이 B 속성의 값을 유일하게 식별할 수 있다면 B 속성은 A 속성에 함수적으로 종속되었다고 함
3.역할
- 속성 간의 종속성을 규명해 집합을 분리하므로 속성과 엔터티를 정의하고 관계를 파악하는 데 절대적인 역할
- 함수 종속성을 기반으로 정규화 과정을 거치면 업무 요건을 만족하면서 엔터티의 주제에 맞도록 속성이 배치됨=>엔터티 정제
- 밀접한 속성을 모아 하나의 릴레이션으로 만드는 체계적인 방법
4.결정자와 종속자
- 속성 간의 종속성을 규명할 때 기준이 되는 값을 결정자(Determinant)라고 함
- 결정자의 값에 의해 정해지는 값을 종속자(Dependent)라고 함
- 속성 Y가 속성 X에 의해 함수적으로 종속된다는 말은 속성 X의 값을 이용해 속성 Y의 값을 유일하게 식별할 수 있다는 의미로써 X의 값에 대해 Y의 값이 오직 하나만 연관돼 있다는 것을 의미
- 표현법
- X -> Y
- Y = F(X)
- X:결정자, Y:종속자
5.함수 종속 예시
주문번호, 주문일자, 고객번호, 상품코드, 고객명, 상품명으로 구성된 릴레이션이 있을 때
다음과 같은 함수 종속이 존재함
FD1 : 주문번호 -> 주문일자
FD2 : 주문번호 -> 고객번호
FD3 : 주문번호 -> 상품코드
FD4 : 고객번호 -> 고객명
FD5 : 상품코드 -> 상품명
X->Y와 같이 속성 간에 종속 관계가 발생하면 X와 Y는 항상 함께 존재해야 함
모든 FD의 결정자는 엔터티의 주 식별자가 돼야 함
따라서 위와 같은 함수 종속에 근거해 다음과 같은 엔터티가 생성됨
엔터티1:#주문번호, 주문일자, 고객번호, 상품코드
엔터티2:#고객번호, 고객명
엔터티3:#상품코드, 상품명
위의 함수 종속 FD1, FD2, FD3을 아래와 같이 FD6, FD7로 표현할 수 있음
FD6 : 주문번호->(주문일자,고객번호,상품코드)
FD7 : (주문번호,상품코드) -> 주문수량
FD6은 당연히 FD1,FD2,FD3으로 분리될 수 있지만 FD7에 대해서는 다음이 성립하지 않음
FD8 : 주문번호 -> 주문수량
FD9 : 상품코드 -> 주문수량
6 간접종속, 이행종속
- X->Y->Z의 종속이 있다면 Z는 X에 간접적으로 종속됨
- 간접 종속이 존재하면 X,Y,Z는 하나의 엔터티에 포함시키면 안 됨
- X와 Y를 하나의 엔터티로, Y와 Z를 하나의 엔터티로 만들어야 함
- X->Y->Z와 같은 종속을 이행종속(Transitive Dependency)이라고 함
7.함수종속과 키(Key)
- 함수 종속의 결정자가 키(Key)가 되도록 릴레이션을 분해하는 과정이 정규화
- 키가 아닌 모든 속성이 키에 직접 종속되도록 분해하는 것이 정규화
- 키와 함수 종속은 밀접한 관계
8.폐포(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의 키(Key)는 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 성립함
8.정규형 도출 방법
- 정규화는 함수 종속에 의해서 수행되며 두 가지 방법으로 정규형을 도출할 수 있음
- 릴레이션의 키를 도출 -> 2정규화, 3정규화 등을 수행
- 릴레이션에 존재하는 모든 함수 종속을 구함 각 FD가 정규형 엔터티가 됨