코딩요
쉬운코드 기술 블로그
코딩요
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 개발자로 성장하기 (11)
    • 컴공 (25)
      • 운영체제 (12)
      • 알고리즘 (1)
      • 데이터베이스 (11)
      • 네트워크 (1)
    • 쉬운코드 (15)
      • 쉬운코드 소개 (6)
      • 쉬운코드 영상 보는 법 (3)
      • 쉬운코드 정정 보고서 (1)
      • 쉬운코드 스토리 (4)
      • 기타 이것저것 (1)
    • 면접 tip (3)

공지사항

  • 아이폰 앱에서는 슈퍼땡스 보내지 말아주세요ㅠㅠ
  • 쉬운코드 멤버십을 소개합니다
  • 쉬운코드 운영 철학

인기 글

hELLO · Designed By 정상우.
글쓰기 / 관리자
코딩요
컴공/데이터베이스

DB 정규화에 쓰이는 functional dependency (함수 종속)

DB 정규화에 쓰이는 functional dependency (함수 종속)
컴공/데이터베이스

DB 정규화에 쓰이는 functional dependency (함수 종속)

2022. 10. 21. 13:32

Functional dependency ?

 

 

두 attributes 집합 사이의 의존성을 나타내는 개념이 functional dependency(FD)다

 

 

 

예를 들어 설명하겠다

 

아래는 임직원 정보를 저장하는 EMPLOY 테이블의 스키마(schema)다

 

empl_id empl_name birth_date position salary

 

 

 

 

EMPLOYEE 테이블에는 총 다섯 개의 attribute가 있는데 이 attribute를 아래와 같이 X, Y 두 집합으로 나눠보겠다

 

 

X = {empl_id}

 

Y = {empl_name, birth_date, position, salary}

 

 

이제 X와 Y의 관계를 생각해 보자

 

 

 

 

empl_id는 임직원을 구별하기 위해 부여된 식별자이다 

 

그러므로 empl_id가 동일한데 empl_name, birth_date, position, salary 중에 하나라도 값이 다를 수는 없다

 

즉, 집합 X의 값이 같으면 집합 Y의 값도 항상 같다

 

수학에서의 함수(function)와 비슷하다

 

함수는 input이 동일하면 output도 항상 동일하기 때문이다

 

 

 

 

다시 돌아와서

 

X와 Y의 관계, 즉,

 

'empl_id가 동일하면 empl_name, birth_date, position, salary도 동일하다'

 

는 이 관계를 뭐라고 말할 수 있냐면

 

'X가 Y를 함수적으로 결정한다(functionally determine)'

 

'Y가 X에게 함수적으로 의존한다(functionally depedent)'

 

이렇게 말할 수 있고, X와 Y의 이런 제약 관계를

 

Functional depedency

(줄여서 FD)

 

라고 한다

 

그리고 이 관계를 기호로 표현하면 아래와 같이 표현할 수 있다

 

X → Y

 

 

 

 

 

 

 

 

 

정리하면 functional dependency는 

 

한 테이블에 있는 두 attribute(s) 집합(set) 사이의 제약(constraint)

 

혹은

 

한 테이블에 있는 두 attribute(s) 집합(set) 사이의 의존성(dependency)

 

이라고 할 수 있겠다

 

 


 

 

 

Functional dependency  예제

 

 

 

마지막으로 FD에 대한 이해를 돕기 위해 몇 가지 예제를 살펴보자

 

아래 FD들은 각각이 유효한 FD일까 아닐까?

 

 

 

{stu_id, class_id} → {grade}

 

학생 ID와 class ID가 둘 다 있어야만 성적을 함수적으로 결정할 수 있기 때문에 위 FD는 유효한 FD라고 볼 수 있다

 

 

 

{score} → {pass_fail}

 

같은 성적(score)인데 누구는 pass가 되고 누구는 fail이 되면 안 되기 때문에

 

성적(score)에 따라 pass인지 fail인지가 함수적으로 결정돼야 한다

 

그러므로 위와 같은 FD는 유효한 FD라고 볼 수 있다

 

 

 

 

 

{empl_name} → {empl_id}

 

동명이인이 있을 수 있기 때문에 같은 empl_name 이라도 empl_id는 다를 수 있어서

 

위 FD는 유효하지 않으며 존재하지 않는다

 

 

 

 

 

 

쉬운코드는 기본에 충실합니다

 

 

 

 

👉 FD 영상 보러 가자~~

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
  • Functional dependency ?
  • Functional dependency  예제
  • 쉬운코드는 기본에 충실합니다
'컴공/데이터베이스' 카테고리의 다른 글
  • [DB] key와 index의 차이
  • [DB] key와 functional dependency 차이
  • DB 트랜잭션 isolation 속성과 lost update
  • MySQL 트랜잭션 serializable 격리 레벨은 MVCC인가?
코딩요
코딩요
8년차 백엔드 개발자가 이해하기 쉽게 설명합니다. 배워서 남주는 블로그! 이해하기 쉬운 기술 블로그! 쉬운코드입니다 :)

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.