[Database] 이상 현상(Anomaly)이란?

sukyeongs·2023년 4월 2일
1
post-thumbnail

🤪 이상 현상(Anomaly)

  • 이상현상(Anomaly) : 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용
  • 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상이다.

이상현상을 해결하기 위해서는 정규화(Normalization)를 해야한다.


이상현상의 종류

1. 삽입 이상(Insertion Anomaly)

  • 데이터 삽입 시 의도와 다른 값들도 삽입되는 현상이다.

소비자가 어떤 물건을 샀는지를 나타내는 데이터베이스가 있다고 가정하자.

그 DB의 기본키가 {user_id , product_id} 인 경우, 소비자가 물건을 사지 않았다면 product_id가 없는 현상이 발생한다. 그러나 product_id는 기본키이기 때문에 무조건적으로 데이터를 채워야 하나 기본키는 Null이 될 수 없으므로 물건을 사지 않은 소비자의 데이터는 테이블에 추가될 수 없다.

테이블에 추가하기 위해서는 '구입하지 않음'이라는 상품을 만들어야 한다.

불필요한 데이터를 추가해야 테이블에 삽입할 수 있는 현상을 삽입 이상이라 한다.


2. 갱신 이상(Update Anomaly)

  • 속성값 갱신 시 일부 튜플만 갱신되어 모순이 발생하는 현상이다.

학생 이름과 전화번호, 전공을 저장하는 테이블이 있다고 가정하자.

전공 중 '소프트웨어공학부'가 '컴퓨터공학과', '사이버보안학과'로 나뉘게 된다면 소프트웨어공학부에 속해있던 모든 학생들의 전공을 바꾸어야 한다.

일부를 깜빡하고 바꾸지 못하는 경우엔 존재하지 않는 전공에 속한 학생이 생기게 된다.

일부만 변경하여 데이터가 불일치하는 모순이 발생하는 현상을 갱신 이상이라 한다.


3. 삭제 이상(Delete Anomaly)

  • 데이터 삭제 시 의도와 다른 값들도 함께 삭제되는 현상이다.

학생의 이름과 전공, 수강 과목을 저장하는 테이블이 있다고 가정하자.

어떤 학생이 A 과목 수강을 철회하는 경우, 그 학생의 이름과 전공 데이터까지 삭제된다.

튜플 삭제로 인해 다른 데이터까지 함께 삭제되는 현상을 삭제 이상이라 한다.




Reference

profile
꺌꺌률리

0개의 댓글