이상 현상
데이터베이스에 데이터를 저장, 업데이트 또는 삭제할 때 발생할 수 있는 예기치 않은 잠재적 문제 상황을 이상 현상이라고 합니다. 이상 현상에는 세 가지 주요 유형이 있습니다:
삽입 이상: 사용자가 데이터베이스에 데이터를 추가하려고 할 때, 일부 필수 데이터가 누락된 경우 삽입이 실패합니다. 이를 삽입 이상이라고 합니다.
업데이트 이상: 사용자가 데이터베이스의 데이터를 업데이트할 때, 실수로 다른 관련 데이터도 함께 변경하는 경우를 업데이트 이상이라고 합니다.
삭제 이상: 사용자가 데이터베이스에서 데이터를 삭제할 때, 실수로 관련 데이터도 함께 삭제하는 경우를 삭제 이상이라고 합니다.
이러한 이상 현상은 데이터베이스의 불일치 및 오류로 이어질 수 있으며, 이는 해당 데이터에 의존하는 애플리케이션에 문제를 일으킬 수 있습니다. 이러한 이상 현상이 발생할 위험을 최소화하기 위해 데이터베이스를 신중하게 설계하는 것이 중요합니다.
각 이상 현상에 대해서 예시를 들어 설명하겠습니다.
삽입 이상
id | 이름 | 전화번호 | 성별 |
1 | 홍길동 | 010-xxxx-xxx1 | 남자 |
2 |
유저 정보를 저장하는 위와 같은 테이블이 있습니다. 2번째 row에 새롭게 데이터를 넣고 싶은데, 이름과 성별 정보만 넣고 싶다면 아래와 같이 삽입할 수 있습니다.
id | 이름 | 전화번호 | 성별 |
1 | 홍길동 | 010-xxxx-xxx1 | 남자 |
2 | 홍길순 | null | 여자 |
전화번호 데이터는 삽입하지 않았기 때문에 Null 값이 생기게 되는데, 이렇게 새로운 데이터를 자연스럽게 삽입할 수 없는 경우를 삽입 이상이라고 합니다.
업데이트 이상
id | 이름 | 회사 | 회사 주소 |
1 | 홍길동 | 구글 | 서울특별시 어딘가 |
2 | 홍길순 | 구글 | 서울특별시 어딘가 |
위와 같은 유저 정보를 저장하는 위와 같은 테이블이 있습니다. 현재 홍길동과 홍길순이 구글에 다니는데 회사가 이전을 해서 회사 주소를 바꿔야 하는 상황입니다. 이 경우, 유저 테이블에 있는 회사 컬럼에서 구글을 찾아서 회사 주소를 일일이 다 바꿔줘야 할 것입니다. 잘못하여 업데이트를 누락할 경우, 데이터 불일치가 발생할 수도 있습니다. 이렇게 데이터를 수정할 때, 데이터 일관성을 지키기 어려운 경우를 업데이트 이상이라고 합니다.
삭제 이상
id | 이름 | 회사 | 회사 주소 |
1 | 홍길동 | 구글 | 서울특별시 어딘가 |
2 | 홍길순 | 애플 | 제주특별자치도 어딘가 |
위와 같이 유저 정보를 저장하는 위와 같은 테이블이 있습니다. 이번에는 홍길동 유저의 정보를 지우고자 합니다. 하지만 유저 테이블에 구글의 정보도 같이 저장되어 있어, 내가 원하는 데이터만을 선택적으로 자연스럽게 지울 수 없게 됩니다. 이렇게 원하는 데이터만을 선택적으로 지울 수 없는 경우를 삭제 이상이라고 합니다.
이상 현상이 일어나는 이유
위 테이블에 들어간 데이터를 잘 보면 힌트를 얻을 수 있습니다. 즉, 성격에 맞는 데이터를 잘 나누지 못해 데이터베이스 잘못 설계한 것입니다. 다행히 데이터베이스를 잘 설계하는 방법, 규칙이 있습니다. 그 규칙을 정규화라고 합니다.
정규화에 대한 내용은 다음 글에서 다뤄보도록 하겠습니다.
댓글