본문 바로가기

Programming/DataBase

[DataBase] 이상 (Anomaly)

이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미 한다.


이상의 종류

- 삽입이상 (Insertion Anomaly) : 삽입 이상은 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상이다.


ex) <수강> 테이블에서 학번이 '600'인 학생의 학년이 '2'라는 사실만을 삽입하고자 하는 경우, 삽입 이상이 발생

<수강> 테이블의 기본키는 학번과 과목번호이기 때문에 삽입할 때 반드시 과목번호가 있어야 한다. 즉, 데이터가 발생되는 시점에는 과목번호가 필요 없지만<수강> 테이블에 기록하고자 할 때 과목번호가 없어 등록할 수 없는 경우가 발생한다는 것이다.


- 삭제이상 (Deletion Anomaly) : 삭제 이상은 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상이다.


ex)<수강> 테이블에서 학번이 '200'인 학생이 과목 번호'c123'의 등록을 취소하고자 하는 경우 

학번이 '200'인 학생의 과목번호가 'c123'인 과목을 취소하고자 그 학생의 튜플을 삭제하면 학년 정보까지 같이 삭제된다. 과목만을 취소하고자 했지만 유지되어야 할 학년 정보까지 삭제되기 때문에 정보 손실이 발생한다.


- 갱신이상 (Update Anomaly) : 갱신 이상은 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상이다.


ex)<수강> 테이블에서 학번이 '400'인 학생의 학년을 '4'에서 '3'으로 변경하고자 하는 경우 갱신 이상이 발생할 수 있다.

학번이 '400'인 모든 튜플의 학년 값을 갱신해야 하는데 실수로 일부 튜플만 갱신하면, 학번'400'인 학생의 학년은 ' 3'과 '4' 즉 2가지 값을 가지게 되어 정보에 불일치성이 생기게 된다.

'Programming > DataBase' 카테고리의 다른 글

[DataBase] 정규화 (Normalization)  (0) 2013.06.28
[DataBase] 함수적 종속 (Functional Dependency)  (0) 2013.06.28
[DataBase] 스토어드 프로시저 (Stored Procedure)  (0) 2013.06.28
내장 SQL  (0) 2013.06.26
SQL - DCL  (0) 2013.06.26