본문 바로가기
CS 공부/데이터베이스

이상현상 (Anomaly)

by 횰쓰 2022. 7. 16.

이상현상 (Anomaly) 이란?

 

데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하된다.

이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해  현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생한다.
 
데이터 이상은 삽입 이상, 삭제 이상, 업데이트 이상이라는 세 가지 유형이 존재한다.

 

다음은 이상 현상을 설명할 대학교 테이블이다.

학번 학생명 학과 코드 학과명 학과장 코드 학과장명
1 도우너 101 경영학과 1000 워런 버핏
2 고길동 101 경영학과 1000 워런 버핏
3 또치 102 물리학과 2000 아인슈타인
4 마이콜 102 물리학과 2000 아인슈타인
5 둘리 103 컴퓨터공학과 3000 빌 게이츠

 


 

삽입 이상

삽입 이상은 특정 데이터가 존재하지 않아 삽입할 수 없을 때 발생한다.

대학교 테이블에서 기본키는 '학번'이다. 따라서, 새로운 행을 삽입하기 위해서는 기본키인 '학번'이 필수이다. 현재 3개의 학과(경영학과, 물리학과, 컴퓨터공학과)가 존재하고 신설학과인 '수학과'가 새로 생겼다고 가정하자. 

하지만, 신설학과인 '수학과'에는 학생이 존재하지 않기 때문에 테이블에 데이터를 추가할 수 없다. 이러한 현상을 삽입 이상이라고 한다.

 

따라서, 이러한 경우에 정규화에 의해 대학교 테이블을 학생 테이블, 학과 테이블로 분리한다면 데이터를 추가할 수 있다. 

 


 

삭제 이상

삭제 이상은 특정 정보를 삭제하면, 원치 않는 정보도 삭제되는 현상이다.

컴퓨터공학과의 둘리 학생이 자퇴를 하여 데이터를 삭제해야 하는 경우 컴퓨터공학과의 학과 코드 및 학과장 정보도 삭제된다.

 

둘리 학생의 데이터를 삭제하면, 

컴퓨터공학과의 학과 코드와 학과장 정보를 특정 테이블에 저장하지 않았기에 데이터가 소멸되는 문제가 발생한다. 이러한 현상을 삭제 이상이라고 한다.

 

삽입 현상에서 설명했듯이 정규화에 의해 테이블을 분리하면 삭제 이상을 해결할 수 있다.

 

 


 

업데이트 이상

테이블의 특정 데이터를 업데이트했는데, 정상적으로 변경되지 않은 경우 그리고 너무 많은 행을 업데이트하는 것을 업데이트 이상이라고 한다.

경영학과의 학생이 100명이라고 가정하고 경영학과의 학과장이 이름을 개명해서 학과장명을 변경해야 하는 경우이다. 

 

학번 학생명 학과 코드 학과명 학과장 코드 학과장명
1 도우너 101 경영학과 1000 워런 버핏
2 고길동 101 경영학과 1000 워런 버핏
... ... ... ... ... ...
100 둘리 101 경영학과 1000 워런 버핏

 

경영학과의 학생이 100명이므로 100개의 데이터를 변경해야 한다.

여기서 변경되지 않은 행이 한 개라도 존재하면, 데이터가 상이한 문제가 발생한다. 그리고 학생이 1000명이라면, 1000개의 데이터를 변경해야 하는 비효율적인 문제가 발생한다. 이러한 현상을 업데이트 이상이라고 한다.

 

위 문제는 다음과 같이 테이블을 두 개로 분리 후 학과장 테이블의 한 개의 행만 변경하여 해결할 수 있다.

 

 

대학교 테이블

학번 학생명 학과 코드 학과명 학과장 코드
1 도우너 101 경영학과 1000
2 고길동 101 경영학과 1000
... ... ... ... ...
100 둘리 101 경영학과 1000

 

학과장 테이블

학과장 코드 학과장명
1000 워런 버핏
2000 아인슈타인
3000 빌 게이츠

 

그리고 대학교 테이블과 학과장 테이블을 조인하여 학과장명을 조회할 수 있다.

 

'CS 공부 > 데이터베이스' 카테고리의 다른 글

레디스(Redis) 란?  (0) 2022.07.23
SQL과 NOSQL의 차이  (0) 2022.07.10

댓글