Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Archives
Today
Total
관리 메뉴

CKtrace's Devlog

[DB] - 함수 종속 본문

DB

[DB] - 함수 종속

CKtrace 2022. 6. 28. 21:33

 

 

 

 

 

About Functional Dependency


 

 

릴레이션 하나를 구성하는 속성들의 부분 집합을 A와 B라 한다면, 시점에 상관없이 릴레이션 내의 모든  튜플에서 A 값에 대한 B 값이 항상 하나라면 "A가 B를 함수적으로 종속되어 있다."라고 합니다.

 

함수 종속 관계는 위와 같이 표현하며, A를 결정자, B를 종속자라고 합니다.

 

함수 종속이란 무엇인지 개념적으로 알아보았으니 예시를 들어 좀 더 자세히 알아보도록 하겠습니다. 

 

 

 

 

 

Advanced Functional Dependency


 

user_id user_name rank
no1 Kim Challenger
no2 Lee Silver
no3 Park Bronze
no4 Su Platinum

 

위와 같은 릴레이션이 있을 때, user_id 속성 값에 대응되는 user_name, rank 속성의 값이 단 하나입니다.

 

이를 통해 user_id가 user_name, rank를 결정한다고 생각할 수 있습니다.

 

no1이라는 user_id를 가진 회원은 user_name이 Kim, rank가 Challenger인 한 회원밖에 존재하지 않으므로 위 릴레이션에서 user_id 속성에 user_name 속성과 rank 속성이 함수적으로 종속되어 있다는 것을 알 수 있습니다.

 

즉, user_id는 결정자가 되고 user_name과 rank는 종속자가 됩니다.

 

 

단, 함수 종속 관계를 판단할 때, 현재 시점에 릴레이션에 포함된 속성 값으로만 판단하면 안된다는 것을 유의하세요!

 

 

위와 같은 점을 유의해야 하는 이유는 릴레이션 안의 속성 값들은 계속 변할 수 있기 때문이며, 속성 자체가 지닌 특성과 의미를 기반으로 판단해야 합니다.

 

함수 종속 관계를 기호로 표시한 경우

 

 

함수 종속 관계를 다이어그램으로 표현한 경우

 

함수 종속 관계를 도식화하여 표현한 함수 종속 다이어그램은 복잡한 함수 종속 관계를 더 직관적으로 이해하는 데 도움이 됩니다.

 

이를 통해 튜플을 구별하는 키인 기본키와 후보키는 특성 때문에 릴레이션을 구성하는 다른 모든 속성들 함수적으로 결정한다는 것을 알 수 있다. 

 

하지만 릴레이션 내의 여러 튜플에서 속성 A 값이 같으면 이 값과 연관된 속성 B 값도 모두 같아야 결정자로 인정받을 수 있기에 그렇지 않은 경우도 알아보도록 하겠습니다.

 

 

user_id reservation_num reservation_result age
JIN 1 YES 28
JIN 4 NO 28
BURGER 3 NO 22
Fighting 2 YES 24

 

 

이전에 알아본 릴레이션과 달리 user_id 속성이 같아도 reservation_result가 다른 경우가 존재하는 이런 경우는 어떻게 함수 종속 관계가 이뤄질까요?

 

reservation_result는 {user_id, reservation_num}에 종속되어 있는 경우는 참입니다.

 

더불어, age 또한 {user_id}에 종속되어 있는 것뿐만 아니라 {user_id, reservation_num}에도 종속되어 있다는 것을 알 수 있습니다.

 

이렇게 {user_id, reservation_num}, 전체에 종속되었지만 일부분인 user_id에는 종속되지 않은 reservation_result 같은 경우를 완전 함수 종속, FFD(Full Functional Dependency)라 합니다.

 

반대로, user_id, reservation_num}, 전체에 종속되었을 뿐만 아니라 일부분인 user_id에도 종속된 age 같은 경우를 부분 함수 종속, PFD(Partial Functional Dependency)라 합니다.

 

 

 

 

 

이상으로 함수 종속에 대한 글을 마치도록 하겠습니다.

 

긴 글이었지만 읽어주셔서 감사하다는 말씀드리며, 다음에는 더 좋은 글로 찾아뵙도록 하겠습니다!

 

감사합니다.

 

 

 

 

 

'DB' 카테고리의 다른 글

[DB] - 트랜잭션  (0) 2022.06.29
[DB] - 정규화  (0) 2022.06.29
[DB] - 데이터베이스 설계 및 이상 현상  (0) 2022.06.27
[DB] - 삽입 SQL (ESQL)  (0) 2022.06.27
[DB] - 뷰  (0) 2022.06.27
Comments