이상(Anomaly)
데이터베이스를 설계하는데에 있어서 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상) 가 나타나기 때문이다.
삽입 이상(Insertion Anomaly)
기본키가 {Student ID, Course ID} 인 경우 -> Course 를 수강하지 않은 학생은 Course ID 가 없는 현상이 발생한다.
결국 Course ID 를 Null 로 할 수 밖에 없는데, 기본키는 Null 이 될 수 없으므로 테이블에 데이터가 추가될 수 없다.
굳이 삽입하기 위해서는 '미수강' 과 같은 Course ID 를 만들어야 한다.
- 불필요한 데이터를 추가해야지 데이터를 삽입할 수 있는 상황 : Insertion Anomaly
갱신 이상(Update Anomaly)
만약 어떤 학생의 전공(Department) 이 "컴퓨터" 에서 "음악" 으로 바뀌는 경우
-> 모든 Department 를 "음악" 으로 바꾸어야 한다. 그러나 일부를 깜빡하고 바꾸지 못하는 경우 데이터의 불일치 현상이 발생하게 된다.
- 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 : Update Anomaly
삭제 이상(Deletion Anomaly)
만약 어떤 학생이 수강을 철회하는 경우, {Student ID, Course ID, Department ID, Course ID, Grade} 의 정보 중
Student ID, Department ID 와 같은 학생에 대한 정보도 함께 삭제되는 경우
- 튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제 : Deletion Anomaly
참고 : https://gyoogle.dev/blog/
'이론 > 데이터베이스' 카테고리의 다른 글
DB - 정규화(Normalization) (0) | 2022.01.28 |
---|---|
DB - 인덱스(Index) (0) | 2022.01.28 |
DB - SQL vs NOSQL (0) | 2022.01.28 |
DB - Join (0) | 2022.01.28 |
DB - Key (0) | 2022.01.27 |