데이터베이스

[데이터베이스] 이상 현상(Anomaly)과 함수적 종속성(Functional Dependency)

재담 2022. 3. 9. 21:34

이상 현상(Anomaly)

이상 현상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복으로 인해 테이블 조작 시 문제가 발생하는 것을 의미한다. 이상의 종류에는 다음과 같이 세 가지가 존재한다.

  • 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상
  • 삭제 이상 : 테이블에서 한 튜플을 삭제할 대 의도와는 상관없는 값들도 함께 삭제(연쇄 삭제)되는 현상
  • 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신 시 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

 

 

함수적 종속성(Functional Dependency)

함수적 종속성의 정의는 다음과 같다. 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자. 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X -> Y로 표기한다. 이 경우 X를 결정자, Y를 종속자라고 한다.

 

함수적 종속에는 세 가지가 있는데 각각에 대해 살펴보자.

 

완전 함수적 종속(Full Functional Dependency)

완전 함수적 종속이란 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분 집합에 종속된 경우를 말한다.

 

출처 : https://dodo000.tistory.com/20#comment18227519

 

위 릴레이션에서는 기본키가 '회원번호' 속성으로 구성되어 있다. 여기서 '이름', '나이', '거주지역' 속성은 기본키인 '회원번호'를 알아야 식별 가능하다. 따라서 '이름', '나이', '거주지역'은 '회원번호'에 완전 함수적 종속된 관계이다.

 

부분 함수적 종속(Partial Functional Dependency)

부분 함수적 종속이란 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 경우, 기본키를 구성하는 속성 중 일부만 종속되는 경우이다.

 

출처 : https://dodo000.tistory.com/20#comment18227519

 

위 릴레이션에서 기본키가 '고객ID'와 '제품코드' 속성으로 구성되어 있는데, '주문상품'은 기본키 중 '상품코드'만 알아도 식별 가능하다. 이 경우에는 '주문상품' 속성은 기본키에 부분 함수적 종속된 관계이다.

 

이행적 함수 종속(Transitive Functional Dependency)

이행적 함수 종속이란 릴레이션에서 X, Y, Z라는 세 개의 속성이 있을 때, X -> Y, Y -> Z 란 종속 관계가 있을 경우 X -> Z가 성립될 때 이행적 함수 종속이라고 한다.

 

출처 : https://dodo000.tistory.com/20#comment18227519

 

위 릴레이션에서 '회원번호'를 알면 '이름'을 알 수 있고, '이름'을 알면 '나이'도 알 수 있다. 따라서 '회원번호'를 알면 '나이'를 알 수 있으므로 이행적 함수 종속 관계이다.


Reference

'데이터베이스' 카테고리의 다른 글

[데이터베이스] 정규화(2)  (0) 2022.03.09
[데이터베이스] 정규화(1)  (0) 2022.03.09