함수적 종속성 (FD, Functional Dependency)

2024. 4. 14. 22:32·Database

 

함수적 종속성(FD, Functional Dependency)

함수적 종속성이란?

함수적 종속성이란, 테이블 내에서 한 속성 X 값에 따라 다른 속성 Y의 값이 유일하게 결정이 될 때 “X가 Y를 함수적으로 결정한다.”라고 표현한다.

반대로 "Y가 X에 함수적으로 종속된다."라고 표현할 수 있고 이는 테이블 내의 어떤 두 행에서 X의 값이 같다면 Y의 값도 반드시 같아야 한다는 것을 의미한다.

 

https://velog.io/@rudy91/Functional-Dependency-%ED%95%A8%EC%88%98%EC%A2%85%EC%86%8D%EC%84%B1-DB

 

이러한 두 값 사이의 제약 관계를 functional dependency(FD)라고 부른다.

 

사용자 테이블을 예시

                            ID                           이름                          주소
                             1                          김철수                    서울시 강남구
                             2                          김짱구                    서울시 서초구
                             3                          김맹구                    서울시 송파구

 

현재 테이블은 ID값에 따라 이름과 주소가 결정이 되기 떄문에 집합 X { ID }가 집합 Y { 이름, 주소 }를 결정한다고 볼 수 있고 이것을 FD라고 한다.

 

주의할 점

X -> Y 는 성립하여도 그 역인 Y -> X는 성립하지 않는다.  (= X가 Y를 결정한다고 해서 Y가 X를 결정하지는 않는다.)

 

예를 들어 ID가 1이면 사용자 이름(김철수)와이름(김철수)과 주소(서울시 강남구)를 결정하지만 반대로 이름(김철수)과 주소(서울시 강남구)가 ID 1을 결정하지는 않는다.

 

여러 ID에서 같은 이름과 주소를 가진 다른 사용자가 있을 수 있기 때문에 반대 관계는 성립하지 않는다.

 

함수적 종속성 종류

부분 함수적 종속성 (Partial functional dependency)

X가 Y를 결정하는 함수적 종속성이 존재하는 경우, X와 동일하지 않은 X의 부분 집합(proper subset)이 Y를 결정할 수 있을 때, X와 Y의 관계를 부분 함수적 종속성이라고 한다.

 

예를 들어 { ID, 전화번호 }가 { 생년월일 } 을 결정할 때 { ID } 만으로도 { 생년월일 }을 결정할 수 있기 때문에 부분 함수적 종속성이라고 한다.

 

X와 동일하지 않은 X의 부분 집합(proper subset) 이란?

X의 집합이 { ID, 주소, 전화번호 } 으로 이루어질 때, X와 동일하지 않은 부분 집합은 { ID, 주소 }, { ID, 전화번호 }, { 주소 } … 가 모두 X의 부분 집합이다. 하지만 { ID, 주소, 전화번호 } 는 X의 부분 집합이 아니다.

 

완전 함수적 종속성 (Full functional dependency)

X가 Y를 결정하는 함수적 종속성이 존재하는 경우, X의 어떤 proper subset도 Y를 결정하지 못할 때, Y는 X에 완전 함수적으로 종속된다고 한다.

 

예를 들어 { 이름, 전화번호 }가 { 주소 }을 결정하는 함수적 종속성이 있을 때, { 이름 }, { 전화번호 }만으로는 { 주소 }를 결정하지 못하기 때문에 완전 함수적 종속성이라고 한다.

 

 

이행적 종속성 (transitive dependency)

이행적 종속성은 X가 Y에 함수적으로 종속되고, Y가 Z에 함수적으로 종속되는 경우, X가 Z에 간접적으로 종속되는 관계를 의미한다.

즉, X → Y와 Y → Z이면, X → Z가 이행적으로 성립이 된다.

 

이행적 종속성은 3차 정규화를(3NF)을 만족하기 위해 제거해야 하는 종속성 유형이다.

 

예를 들어 { ID }가 { 이름 }을 결정하고 { 이름 }이 { 카드번호 }을 결정할 때, { ID }가 { 카드번호 }을 결정하는 경우 ID는 카드번호에 이행적으로 종속된다고 말한다.

 

 

 

'Database' 카테고리의 다른 글

[E-commerce] 캐시를 통한 애플리케이션 성능 개선  (1) 2024.05.10
[E-commerce] 쿼리 분석 및 인덱스 설계를 통한 성능 개선  (0) 2024.05.10
[OpenSearch] OpenSearchClient와 OpenSearch Query DSL 이용하기  (0) 2023.07.29
[Redis] Redis 캐시(Cache)를 적용해 조회 성능 개선하기  (0) 2023.02.16
[Redis] SpringBoot Redis 적용기  (1) 2023.02.15
'Database' 카테고리의 다른 글
  • [E-commerce] 캐시를 통한 애플리케이션 성능 개선
  • [E-commerce] 쿼리 분석 및 인덱스 설계를 통한 성능 개선
  • [OpenSearch] OpenSearchClient와 OpenSearch Query DSL 이용하기
  • [Redis] Redis 캐시(Cache)를 적용해 조회 성능 개선하기
seungjjun
seungjjun
  • seungjjun
    개발이야기
    seungjjun
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 성장이야기
        • TIL
        • 주간회고
      • Java
        • Spring
        • Spring Security
      • 트러블슈팅
      • Kafka
      • OS
      • Network
      • 메가테라
      • Database
      • Algorithm
      • Git
      • HTML
      • CSS
      • 독서
      • 컴퓨터 이해하기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    redis
    이커머스 프로젝트
    항해플러스
    항해99
    개발일지
    graphQL
    주간회고
    메가테라 주간회고
    메가테라
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seungjjun
함수적 종속성 (FD, Functional Dependency)
상단으로

티스토리툴바