[Database] 이상(Anomaly)
2023. 12. 7. 11:13ㆍCS
Anomaly
정규화를 해야하는 이유 : 잘못된 테이블 설계로 인해 Anomaly (이상 현상)가 나타나기 때문이다.
이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말한다.
이상 현상의 종류
1. 삽입 이상(Insertion Anomaly)
자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가가 가능한 현상
불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly
- 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함.
- 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음.
- 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함.
2. 갱신 이상 (Update Anomaly)
중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
일부만 변경하여, 데이터가 불일치 하는 모순의 문제 = Update Anomaly
- 만약 어떤 학생의 전공 (Department) 이 "컴퓨터에서 음악"으로 바뀌는 경우.
- 모든 Department를 "음악"으로 바꾸어야 함. 그러나 일부를 깜빡하고 바꾸지 못하는 경우, 제대로 파악 못함
3. 삭제 이상 (Deletion Anomaly)
어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상
튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제 = Deletion Anomaly
- 만약 어떤 학생이 수강을 철회하는 경우, {Student ID, Course ID, Department, Course ID, Grade}의 정보 중 Student ID, Department 와 같은 학생에 대한 정보도 함께 삭제됨.
반응형
'CS' 카테고리의 다른 글
[Database] 인덱스(Index) (1) | 2023.12.07 |
---|---|
[Database] SQL과 NOSQL (0) | 2023.12.05 |
[Database] SQL Injection (보안) (1) | 2023.12.05 |
[Database] 조인(Join) (0) | 2023.12.04 |
[Database] 키(Key) (2) | 2023.12.04 |