Concept
Anomaly이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고
이 중복으로 인해 테이블 조작 시 문제가 생기는 현상을 의미
-
이상의 종류
-
삽입 이상 (Insertion Anomaly)
-
삭제 이상 (Deletion Anomaly)
-
갱신 이상 (Update Anomaly)
-
삽입 이상 (Insertion Anomaly)
- 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
<수강> 테이블에서 학번이 "600"인 학생의 학년이 "2"라는 사실만을 삽입하고자 하는경우, 삽입 이상이 발생한다.
==> <수강> 테이블의 기본키는 학번과 과목번호이기 때문에 삽입할 때 반드시 과목번호가 있어야한다.
즉 데이터가 발생되는 시점에는 과목번호가 필요 없지만 <수강> 테이블에 기록하고자 할 때 과목번호가 없어 등록할 수 없는 경우가 발생한다.
삭제 이상 (Deletion Anomaly)
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉
연쇄 삭제
가 발생하는 현상
<수강> 테이블에서 학번이 "200"인 학생이 과목번호 "C123"의 등록을 취소하고자 하는 경우 삭제 이상이 발생한다.
==> 학번이 "200"인 학생의 과목번호가 "C123"인 과목을 취소하고자 그 학생의 튜플을 삭제하면 학년 정보까지 같이 삭제된다.
과목만을 취소하고자 했지만 유지되어야 할 학년 정보까지 삭제되기 때문에 정보 손실이 발생한다.
갱신 이상 (Update Anomaly)
- 테이블에서 튜플에 있는 속성 값을 갱신 시 일부 튜플의 정보만 갱신되어 정보에
불일치성(Incosistency)
이 생기는 현상
<수강> 테이블에서 학번이 "400"인 학생의 학년을 "4"에서 "3"으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있다.
==> 학번이 "400"인 모든 튜플의 학년 값을 갱신해야 하는데 실수로 일부 튜플만 갱신하면,
학번 "400"인 학생의 학년은 "3"과 "4", 즉 2가지 값을 가지게 되어 정보에 불일치성이 생기게 된다.