정보처리산업기사 실기/데이터베이스

이상(Anomaly)과 함수적 종속

미웡할꺼야 2020. 11. 6. 20:48

이상(Anomaly)

- 데이터베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성들이 존재하여, 데이터의 중복과 종속으로 인해 발생되는 문제점을 말한다. 릴레이션을 처리하는데 여러 가지 문제를 초래하게 된다.

- 이상의 종류에는 삭제 이상, 삽입 이상, 갱신 이상이 있다.

 

1) 삭제 이상(Deletion Anomaly)

- 테이블에서 하나의 자료를 삭제하고자 하는 경우 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않은 자료까지 함께 삭제가 이루어져 발생하는 문제점을 말한다.

 

2) 삽입 이상(Insertion Anomaly)

- 삽입하는 과정에서 원하지 않는 자료가 삽입된다든지 삽입하는데 자료가 부족해 삽입이되지 않아 발생하는 문제점을 말한다.

 

3) 갱신 이상(Update Anomaly)

- 정확하지 않거나 일부의 튜플만 갱신됨으로 인해 정보가 모호해지거나 일관성이 없어져 정확한 정보의 파악이 안 되는 현상을 말한다.


함수적 종속(Fuctional Dependency)

- 종속 : 어떤 릴레이션에서 속성 A, B가 있을 때, 임의 튜플에서 A의 값이 B의 값을 함수적으로 결정한다면, 즉 A의 값을 알면 B의 값이 달라진다면, B는 A에 함수적으로 종속되었다고 하고, 기호로는 'A -> B'로 표기한다.

- B가 A에 종속되어 A값을 알면 B값을 알 수 있을 때, A를 '결정자'라고 하고, B를 '종속자'라고 한다.

- 종류 : 완전 함수 종속, 부분 함수 종속, 이행적 함수 종속

 

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

- 릴레이션에서 한 속성이 오직 기본키에만 종속이 되는 경우를 말한다.

ex) 테이블의 속성이 학번(PK), 성명, 수강과목, 학년으로 구성되어 있을 경우
'성명, 수강과목, 학년'은 기본키인 '학번'을 알아야 알 수 있으므로 '성명, 수강과목, 학년'은 '학번'에 완전 함수 종속되었다고 한다.
학번 -> (성명, 수강과목, 학년)

 

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

- 릴레이션에서 한 속성이 기본키가 2개 이상 합성키(복합키)로 구성된 경우 이 중 일부 속성에 종속이 되는 경우를 말한다.

ex) 테이블의 속성이 고객번호(PK), 제품번호(PK), 제품명, 주문량으로 구성되어 있을 경우
'주문량'은 기본키인 '고객번호, 제품번호'을 알아야 알 수 있으므로 '주문량'은 '고객번호, 제품번호'에 완전 함수 종속되었다고 한다.
(고객번호, 제품번호) -> 주문량
반면, '제품명'은 기본키의 일부인 '제품번호'만 알아도 '제품명'을 알 수 있으므로 '제품명'은 기본키에 부분 함수 종속되었다고 한다.
제품번호 -> 제품명

 

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

- 릴레이션에서 A, B, C 세 가지 속성 간의 종속이 A -> B, B -> C 일 때 A -> C가 성립이 되는 경우 이행적 함수 종속이라고 한다. 즉, A를 알면 B를 알수 있고, B를 알면 C를 알 수 있을 때, A를 알면 C를 알 수 있는 경우를 말한다.

ex) 테이블의 속성이 제품번호(PK), 제품명, 단가로 구성되어 있을 경우
'제품번호'를 알면 '제품명을 알 수 있다. 또 '제품명'을 알면 '단가'를 알 수 있다. 결국 '제품번호'를 알면 '단가'를 알 수 있으므로 이행적 함수 종속이라고 한다.
제품번호 -> 제품명
제품명 -> 단가
제품번호 -> 단가