일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 인덱스
- SQL
- 제1정규형
- 제5정규형
- 제3정규형
- 서브타입
- 데이터통합
- 정규형
- 물리모델
- 제4정규형
- mysql
- 제2정규형
- 요구사항명세서
- 배타서브타입
- 중복서브타입
- 실행계획
- 공통코드
- 크롬원격데스크톱
- 샘플데이터
- 불완전서브타입
- 더미데이터
- Workbench
- vue3
- order-by
- 워크벤치
- index
- group-by
- 완전서브타입
- 함수종속
- bc정규형
- Today
- Total
domsam - IT 기술 블로그
함수 종속 본문
함수 종속은 릴레이션 내에 존재하는 속성 간의 종속성을 의미한다.
정규화를 이해하려면 함수 종속을 이해해야 한다. 함수 종속은 관계형 모델을 설계할 때 가장 중요한 데이터 종속성(Data Dependency) 이다. 어떤 집합 데이터이든 그 집합을 대표할 수 있는 속성은 존재한다. 대표 속성(식별자)과 나머지 속성 사이의 연관 관계가 함수 종속이다.
릴레이션에서 A속성의 값이 B속성의 값을 유일하게 식별할 수 있다면 B속성은 A속성에 함수적으로 종속됐다고 한다.
함수 종속은 밀접한 속성을 모아 하나의 릴레이션으로 만드는 체계적인 방법이다. 정규화가 잘 됐는지, 즉 함수 종속에 의해 집합이 잘 분해됐는지는 좋은 모델을 구별하는 기준이되고 함수 종속은 좋은 모델을 만드는 도구가 된다.
속성 간의 종속성을 규명할 때 기준이 되는 값을 결정자(Determinant)라고 한다. 그리고 결정자의 값에 의해 정해지는 값을 종속자(Dependent)라고 한다. 속성 Y가 속성 X에 의해 함수적으로 종속된다는 말은 속성 X의 값을 이용해 속성 Y의 값을 유일하게 식별할 수 있다는 의미로써, X의 값에 대해 Y의 값이 오직 하나만 연관돼 있다는 것을 의미한다.
아래처럼 표기한다
- X
→Y - y = f(x)
예를 들어 위와 같은 그림(1) 릴레이션이 있다면 주민등록번호는 결정자가 될 수 있다. 왜냐하면 주민등록번호를 알면 나머지(이름, 휴대전화번호, 주소)는 하나만 유일하게 결정되기 때문이다. 즉, 이름, 휴대전화번호, 주소는 주민등록번호에 함수적으로 종속돼 있다.
만약, 이름을 안다고 주민등록번호가 고유하게 결정되지 않는다. 동명이인이 존재할 수 있기 때문이다. 따라서 이름은 주민등록번호, 휴대전화번호, 주소를 유일하게 결정하지 못 한다.
위와 같은 그림(2) 릴레이션이 있을 때 이 속성간의 함수 종속(FD, Function Dependency)을 전부 도출하면 다음과 같다. (한 주문번호에 여러 상품번호를 가질 수 있다.)
- FD1: 주문번호
→주문일자 - FD2: 주문번호
→고객번호 - FD3: 주문번호
→상품번호 - FD4: 고객번호
→고객명 - FD5: 상품번호
→상품명 - FD6: 주문번호
→(주문일자, 고객번호, 상품번호)
주문번호를 알면 언제 주문했는지(FD1), 누가 주문했는지(FD2), 어떤 상품을 주문했는지(FD3)를 알 수 있다. 고객번호를 알면 그 고객의 이름(FD4)을, 상품번호를 알면 상품명(FD5)을 알 수 있다. 위의 5개 이외에 존재하는 함수 종속은 없다.
함수종속 FD1, FD2, FD3을 FD6과 같이 표현할 수 있다.
X → Y와 같이 속성 간의 종속 관계(직접 종속)가 발생하면 X와 Y는 항상 함께 존재해야 한다. 따라서 위와 같은 함수 종속(FD)에 근거해 다음과 같은 엔터티가 생성된다. 모든 FD의 결정자는 엔터티의 주 식별자가 돼야 한다.
- 엔터티1: #주문번호, 주문일자, 고객번호, 상품번호
- 엔터티2: #고객번호, 고객명
- 엔터티3: #상품번호, 상품명
만약, 그림(3)과 같이 수량 속성이 있는 릴레이션이라면 수량은 여러 속성이 결정자가 된다.
FD7: (주문번호, 상품번호) → 수량
만약 X → Y → Z 종속(Transitive Dependency, 이행 종속)이 있다면 Z는 X에 간접적으로 종속돼 있다. 이렇게 간접 종속이 존재하면 X, Y, Z를 하나의 엔터티에 포함시키면 안 되고 직접 종속인 X, Y를 하나의 엔터티로, Y, Z를 하나의 엔터티로 도출해야 한다. 함수 종속은 일반적으로 직접 종속을 의미한다.
함수 종속은 키와 밀접한 연관이 있다. 함수 종속의 결정자가 키가 되도록 릴레이션을 분해하는 과정이 정규화이기 때문이다. 즉, 모든 종속자 속성이 결정자 속성에 종속되도록 릴레이션을 분해하는 것이 정규화다. 임의의 릴레이션에서 결정자를 찾지 못하면 정규화를 할 수 없고 키가 없이는 엔터티가 될 수 없으므로 키와 함수 종속은 밀접한 관계가 있다.
'SQL > 정규형' 카테고리의 다른 글
BC정규형 (Boyce-Codd Normal Form) (0) | 2025.02.21 |
---|---|
제3정규형 (Third Normal Form) (0) | 2025.02.21 |
제2정규형 (Second Normal Form) (0) | 2025.02.21 |
제1정규형 (First Normal Form) (0) | 2025.02.20 |
정규화(Normalization), 정규형(Normal Form) (0) | 2025.02.19 |