
만약 데이터 모델링이 잘못되어 데이터베이스 설계가 잘못 이루어진다면 어떠한 문제점이 생겨날까???
데이터 모델링이 잘못되어 잘못된 데이터베이스가 만들어진다면 데이터베이스 이상 현상이 발생할 수 있다. 데이터베이스 이상 현상에는 크게 3가지의 이상 현상이 존재한다.
삽입 이상: DB에 새 데이터를 삽입하기 위해서는 원치 않은 데이터도 같이 삽입해야 되서 새로운 데이터를 자연스럽게 저장할 수 없는 이상 현상이다.
| name | company | company_phone_number | address |
|---|---|---|---|
| 홍길동 | NEVER | 356-213-134 | 서울 |
| 김철수 | CACAO | 409--234-658 | 부산 |
| 박영희 | SAMSONG | 397-346-379 | 수원 |
위와 같은 데이터베이스 테이블이 있다고 가정해보자.
해당 테이블에 name과 company에만 새로운 데이터를 추가하고 싶다면
| name | company | company_phone_number | address |
|---|---|---|---|
| 홍길동 | NEVER | 356-213-134 | 서울 |
| 김철수 | KAKAU | 409--234-658 | 부산 |
| 박영희 | SAMSONG | 397-346-379 | 수원 |
| 최미미 | COUFANG | NULL | NULL |
company_phone_number와 address에는 아무 데이터나 NULL값을 채워놓아야만 새로운 데이터가 추가가 가능하다.
바로 이렇게 새로운 데이터를 삽입하려면 원치 않은 데이터도 같이 삽입해야 되는 경우가 삽입 이상이다.
업데이트 이상: 중복된 값들 중 일부만 수정되어 데이터가 불일치하게 되어 데이터의 무결성이 깨지는 이상 현상이다.
즉 데이터를 업데이트하면 데이터의 정확성이 깨지는 이상 현상을 의미한다.
| name | company | company_phone_number | address |
|---|---|---|---|
| 홍길동 | NEVER | 356-213-134 | 서울 |
| 김철수 | KAKAU | 409--234-658 | 부산 |
| 박영희 | SAMSONG | 397-346-379 | 수원 |
| 김탁구 | NEVER | 356-213-134 | 용인 |
만약 name이 홍길동인 데이터의 company_phone_number의 데이터를 바꾼다고 가정해보자. 하지만 현재 테이블에는 홍길동 말고도 NEVER에 재직 중인 김탁구가 존재한다. 홍길동의 company_phone_number를 바꿀 때 중복된 데이터인 김탁구의 company_phone_number도 똑같이 수정되지 않는다면 NEVER 전화번호가 두 개로 나뉘는 현상이 발생하는데
이처럼 중복된 데이터들 중에서 일부 데이터들만 수정 후 저장된다면 같은 데이터가 여러 개로 나뉘어져 업데이트 이상 현상이 발생한다.
삭제 이상: 삭제 이상은 데이터를 삭제할 때 삭제되면 안 되는 데이터들도 의도와는 달리 같이 삭제되어버리는 현상이다.
즉 원하는 데이터만 삭제하는 것이 불가능한 현상이다.
| name | company | company_phone_number | address |
|---|---|---|---|
| 홍길동 | NEVER | 356-213-134 | 서울 |
| 김철수 | KAKAU | 409--234-658 | 부산 |
| 박영희 | SAMSONG | 397-346-379 | 수원 |
| 김탁구 | NEVER | 356-213-134 | 용인 |
예를 들어 NEVER에 다니는 홍길동 데이터를 삭제하려고 하였는데 DB 모델링이 잘못되어 NEVER 다니는 김탁구의 데이터도 같이 삭제되는 현상이 발생할 수 있다.
이처럼 특정 데이터를 삭제하려면 의도치 않은 다른 데이터도 같이 삭제되는 경우를 삭제 이상이라 한다.
데이터베이스 이상 현상이란 한 마디로 데이터베이스에서 삽입, 업데이트, 삭제를 제대로 진행할 수 없는 현상을 의미한다.
데이터베이스 이상 현상이 발생하는 원인은 데이터 모델링이 제대로 이루어지지 않았기 때문이고 이러한 이상 현상이 발생하는 것은 데이터베이스 정규화를 통해 방지될 수 있다.