본문 바로가기
카테고리 없음

이상 현상

by youngxdev 2023. 3. 2.

이상 현상

데이터베이스에 데이터를 저장, 업데이트 또는 삭제할 때 발생할 수 있는 예기치 않은 잠재적 문제 상황을 이상 현상이라고 합니다. 이상 현상에는 세 가지 주요 유형이 있습니다:

 

삽입 이상: 사용자가 데이터베이스에 데이터를 추가하려고 할 때, 일부 필수 데이터가 누락된 경우 삽입이 실패합니다. 이를 삽입 이상이라고 합니다.

업데이트 이상: 사용자가 데이터베이스의 데이터를 업데이트할 때, 실수로 다른 관련 데이터도 함께 변경하는 경우를 업데이트 이상이라고 합니다.

삭제 이상: 사용자가 데이터베이스에서 데이터를 삭제할 때, 실수로 관련 데이터도 함께 삭제하는 경우를 삭제 이상이라고 합니다.

이러한 이상 현상은 데이터베이스의 불일치 및 오류로 이어질 수 있으며, 이는 해당 데이터에 의존하는 애플리케이션에 문제를 일으킬 수 있습니다. 이러한 이상 현상이 발생할 위험을 최소화하기 위해 데이터베이스를 신중하게 설계하는 것이 중요합니다.

각 이상 현상에 대해서 예시를 들어 설명하겠습니다.

 

삽입 이상

id 이름 전화번호 성별
1 홍길동 010-xxxx-xxx1 남자
2      

유저 정보를 저장하는 위와 같은 테이블이 있습니다. 2번째 row에 새롭게 데이터를 넣고 싶은데, 이름과 성별 정보만 넣고 싶다면 아래와 같이 삽입할 수 있습니다.

id 이름 전화번호 성별
1 홍길동 010-xxxx-xxx1 남자
2 홍길순 null 여자

전화번호 데이터는 삽입하지 않았기 때문에 Null 값이 생기게 되는데, 이렇게 새로운 데이터를 자연스럽게 삽입할 수 없는 경우를 삽입 이상이라고 합니다.

 

업데이트 이상

id 이름 회사 회사 주소
1 홍길동 구글 서울특별시 어딘가
2 홍길순 구글 서울특별시 어딘가

위와 같은 유저 정보를 저장하는 위와 같은 테이블이 있습니다. 현재 홍길동과 홍길순이 구글에 다니는데 회사가 이전을 해서 회사 주소를 바꿔야 하는 상황입니다. 이 경우, 유저 테이블에 있는 회사 컬럼에서 구글을 찾아서 회사 주소를 일일이 다 바꿔줘야 할 것입니다. 잘못하여 업데이트를 누락할 경우, 데이터 불일치가 발생할 수도 있습니다. 이렇게 데이터를 수정할 때, 데이터 일관성을 지키기 어려운 경우를 업데이트 이상이라고 합니다.

 

삭제 이상

id 이름 회사 회사 주소
1 홍길동 구글 서울특별시 어딘가
2 홍길순 애플 제주특별자치도 어딘가

위와 같이 유저 정보를 저장하는 위와 같은 테이블이 있습니다. 이번에는 홍길동 유저의 정보를 지우고자 합니다. 하지만 유저 테이블에 구글의 정보도 같이 저장되어 있어, 내가 원하는 데이터만을 선택적으로 자연스럽게 지울 수 없게 됩니다. 이렇게 원하는 데이터만을 선택적으로 지울 수 없는 경우를 삭제 이상이라고 합니다.

 

이상 현상이 일어나는 이유

위 테이블에 들어간 데이터를 잘 보면 힌트를 얻을 수 있습니다. 즉, 성격에 맞는 데이터를 잘 나누지 못해 데이터베이스 잘못 설계한 것입니다. 다행히 데이터베이스를 잘 설계하는 방법, 규칙이 있습니다. 그 규칙을 정규화라고 합니다.

 

정규화에 대한 내용은 다음 글에서 다뤄보도록 하겠습니다.

댓글