함수적 종속(Functional Dependency)
함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해봅니다. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 합니다. 이 경우 X를 결정자, Y를 종속자라고 합니다. 이를 기호로 표현하면 X→Y입니다. 이런 함수적 종속관계에는 완전 함수적 종속과 부분 함수적 종속 및 이행적 함수 종속이 있습니다.
[예시]
학번 | 이름 | 나이 | 성별 | 전공코드 | 전공명 |
110011 | 박지현 | 26 | 여성 | AAA1 | 국문학과 |
110011 | 박지현 | 26 | 여성 | C0B7 | 컴퓨터공학과 |
131001 | 김민석 | 25 | 남성 | C0A5 | 전기전자공학과 |
120006 | 홍현희 | 25 | 여성 | B1027 | 무용과 |
150705 | 한태민 | 23 | 남성 | C0A5 | 전기전가공학과 |
171024 | 설화영 | 22 | 여성 | B01K2 | 공예과 |
이 릴레이션에서는 '학번'을 알면 '이름', '나이', '성별' 속성을 식별할 수 있으며, '힉번'이 다르면 그에따른 값도 다릅니다. 따라서 '이름', '나이', '성별' 속성은 '힉번'에 함수적인 종속관계입니다. 같은 이유로 전공 속성또한 '전공코드'에 함수적인 종속관계에 있습니다.
학번→이름, 학번→나이, 학번→성별
1) 완전 함수적 종속(Full Functional Dependency)
완전 함수적 종속이란, 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우입니다.
[예시]
회원번호 | 이름 | 나이 | 거주지역 |
A001 | 송민지 | 17 | 서울 |
A002 | 박아람 | 15 | 부산 |
A003 | 이예은 | 16 | 대전 |
이 릴레이션에서는 기본키가 '회원번호' 속성으로 구성되어 있다. 여기서 '이름', '나이', '거주지역' 속성은 기본키인 '회원번호'을 알아야 식별 가능하다. 따라서 '이름', '나이', '거주지역'은 '회원번호'에 완전 함수 종속된 관계입니다.
고객ID | 상품코드 | 주문상품 | 수량 | 가격 |
AAAA01 | T001 | 티셔츠 | 2 | 12000 |
AAAA01 | B110 | 청바지 | 1 | 11000 |
AAAA02 | B110 | 청바지 | 2 | 22000 |
AAAA03 | T091 | 와이셔츠 | 1 | 15000 |
AAAA03 | O100 | 원피스 | 1 | 19000 |
해당 릴레에션의 기본키는 '고객ID'와 '상품코드' 속성으로 구성되어 있습니다. 여기서 '수량' 속성은 기본키를 구성하는 '고객ID', '상품코드' 속성을 모두 알아야 식별할 수 있습니다. 따라서 '수량'은 완전 함수 종속된 관계입니다.
2) 부분 함수적 종속(Partial Functional Dependency)
부분 함수적 종속이란, 릴레이션에서 종속자가이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부만 종속되는 경우입니다.
[예시]
고객ID | 제품코드 | 주문상품 | 수량 | 가격 |
AAAA01 | T001 | 티셔츠 | 2 | 12000 |
AAAA01 | B110 | 청바지 | 1 | 11000 |
AAAA02 | B110 | 청바지 | 2 | 22000 |
AAAA03 | T091 | 와이셔츠 | 1 | 15000 |
AAAA03 | O100 | 원피스 | 1 | 19000 |
기본키가 '고객ID'와 '상품코드' 속성으로 구성된 위의 릴리이션에서서 '주문상품'은 기본키 중 '상품코드'만 알아도 식별할 수 있습니다. 이 경우에는 '주문상품' 속성은 기본키에 부분 함수 종속된 관계입니다.
3) 이행적 함수 종속(Transitive Functional Dependecy)
릴레이션에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우, X→Z가 성립될 때 이행적 함수 종속이라고 합니다. 즉, X를 알면 Y를 알고 그를 통해 Z를 알 수 있는 경우를 말합니다.
[예시]
상품번호 | 상품명 | 소분류 | 대분류 |
A001 | 검은 체크무늬 셔츠 | 상의 | 의류 |
A002 | 유선 마우스 | 마우스 | 전자제품 |
A003 | 유기농 양배추 | 야채 | 식료품 |
A004 | 포테이토 칩 | 스낵 | 식료품 |
A005 | 32인치 4K 모니터 | 모니터 | 전자제품 |
A006 | 청바지 | 하의 | 의류 |
A007 | 분홍 스웨터 | 상의 | 의류 |
이 릴레이션에서 '상품번호'를 알면 '소분류'를 알 수 있고, '소분류'을 알면 '대분류'도 알 수 있습니다. 따라서 '상품번호'를 알면 '대분류'를 알 수 있으므로 이행적 함수 종속 관계입니다.
이때, 대분류는 소분류에 의해 관계되는 항목이지만, 상품번호를 통해 귀속되어있습니다. 따라서 이런 관계를 이행적 함수 종속이라고 합니다
'데이터베이스' 카테고리의 다른 글
12. 데이터베이스 순차접근(Full Table Scan)과 인덱스(Index) (1) | 2018.04.07 |
---|---|
11. 데이터베이스 정규화(Normalization), 역정규화(DeNormalization) (0) | 2018.04.05 |
9. 데이터베이스 이상(Abnormal) (1) | 2018.04.05 |
8. 데이터베이스 키(Key)와 무결성 제약조건(Integrity Constraint) (0) | 2018.04.04 |
7. 관계형 데이터 모델(Relation Data Model) (0) | 2018.04.04 |