데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하됩니다. 이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생합니다.
| 학번 | 이름 | 학과 | 반 | 교수명 |
|---|---|---|---|---|
| 1 | 짱구 | 경영학 | A | 워런 버핏 |
| 2 | 철수 | 전자공학 | B | 테슬라 |
| 3 | 맹구 | 소프트웨어 | C | 빌 게이츠 |
| 4 | 훈이 | 전자공학 | B | 테슬라 |
| 5 | 유리 | 천문학 | D | 갈릴레오 갈릴레이 |
-> 삽입 이상은 특정 데이터가 존재하지 않아 중요한 데이터를 데이터 베이스에 삽입할 수 없을 떄 발생한다
예를들어보자
-> 대학교 테이블에서는 기본키는 '학번'이다 새로운 행을 삽입하려면
기본키인 '학번'이 필수이다.
새로운 신설학과인 강아지 (심리학)학과가 생겼다고 가정해보자
| 학번 | 이름 | 학과 | 반 | 교수명 |
|---|---|---|---|---|
| 1 | 짱구 | 경영학 | A | 워런 버핏 |
| 2 | 철수 | 전자공학 | B | 테슬라 |
| 3 | 맹구 | 컴공과 | C | 빌 게이츠 |
| 4 | 훈이 | 전자공학 | B | 테슬라 |
| 5 | 유리 | 천문학 | D | 갈릴레오 갈릴레이 |
| 강아지 심리학 | F | 강형욱 |
-> 하지만 신설학과인 '강아지 심리학'에는 학생이 존재하지 않기 때문에
대학교 테이블에 데이터 추가를 할 수 없다.
이러한 현상을 삽입이상(Insertion anomaly)라고 한다.
(현재는 정규화가 되어있지 않은 상태라고 가정)
테이블의 특정 데이터를 업데이트했는데, 정상적으로 변경되지 않은 경우
그리고 너무 많은 행을 업데이트하는 것을 업데이트 이상이라고 한다.
예를들어
-> 경영학 학생이 200명이라고 가정하고 경영학과의 교수명을 변경해야하는 경우다
| 학번 | 이름 | 학과 | 반 | 교수명 |
|---|---|---|---|---|
| 1 | 짱구 | 경영학 | A | 워런 버핏 |
| 2 | 신형만 | 경영학 | A | 워런 버핏 |
| 3 | 봉미선 | 경영학 | A | 워런 버핏 |
| . | .. | ... | ... | .... |
| 4 | 액션가면 | 경영학 | A | 워런 버핏 |
-> 이 경우 경영학과 학생이 200명이므로 200개의 데이터를 변경해야한다
여기서 한명이라도 변경이 안된다면 문제가 발생한다.
그리고 학생이 많아질수록 이런 비효율적인 문제가 발생한다.
이러한 현상을 업데이트(update anomaoly)라고한다.
이 문제는 테이블을 대학교 테이블과 학과장 테이블을 분리 후
한개의 행만 변경하여 해결할 수 있다.
삭제 이상은 특정 정보를 삭제하면,원치 않는 정보도 삭제되는 현상이다.
| 학번 | 이름 | 학과 | 반 | 교수명 |
|---|---|---|---|---|
| 1 | 짱구 | 경영학 | A | 워런 버핏 |
| 2 | 철수 | 전자공학 | B | 테슬라 |
| 3 | 맹구 | 컴공과 | C | 빌 게이츠 |
| 4 | 훈이 | 전자공학 | B | 테슬라 |
| 5 | 유리 | 천문학 | D | 갈릴레오 갈릴레이 |
예를들어
-> 맹구가 코딩이 어렵다고 컴공과를 자퇴하겠다며 데이터를 삭제하는 경우
컴공과의 학과 및 학과장 정보도 삭제해야합니다.
맹구 학생의 데이터를 삭제하면, 컴공과에 학과반,학과장 정보를
특정 테이블에 저장하지 않았기에 데이터가 소멸되는 문제가 발생한다.
이러한 현상을 삭제 이상이라고 한다.
해결방법은 정규화에 의해 테이블을 분리하면 삭제 이상을 해결할 수 있다.!
이상현상 종류에 대해 깔끔하게 잘 정리해주셨네요