이상현상

hyungjunn·2024년 2월 1일

데이터베이스

목록 보기
9/14
post-thumbnail

이상현상이란??

잘못 설계된 데이터베이스에서는 불필요한 데이터들의 중복이 발생하게 된다. 중복이 생기게 되면 삽입, 수정, 삭제를 할 때 부작용이 발생하게 된다. 이러한 부작용을 이상현상(Anomaly)라고 한다.

이상 현상은 크게 3가지로 분류한다.

  • 삽입 이상(Insertion Anomaly): 릴레이션에 새로운 인스턴스를 insert할 때 발생하는 데이터 이상 현상

  • 갱신 이상(Update Anomaly): 릴레이션에서 속성의 값을 업데이트할 때 발생하는 데이터 이상 현상

  • 삭제 이상(Deletion Anomaly): 릴레이션에서 어느 인스턴스를 delete할 때 발생하는 데이터 이상 현상

아노말리를 제거하지 않으면 결코 좋은 데이터 모델이 될 수 없다.

다음 릴레이션을 통해 3가지 이상 현상을 알아본다.

student_idstudent_namebirth_yearmajorlecture_codelecture_name
32231000홍길동2003화학과C100Java 프로그래밍
32231001김길동2003수학과C100Java 프로그래밍
32231002임길동2003물리학과C100Java 프로그래밍
32231003고길동2003컴퓨터공학과C100Java 프로그래밍
32231004한길동2003기계공학과C100Java 프로그래밍

삽입 이상(Insertion Anomaly)

강의를 아직 신청하지 않은 학생을 삽입할 경우에 lecture_code와 lecture_name의 속성에 null값이 들어가게 된다.

이렇게 새 데이터를 삽입하기 위해 원치 않는 불필요한 데이터도 함께 삽입해야 하는 문제를 삽입 이상이라 한다.

갱신 이상(Update Anomaly)

Java 프로그래밍이라는 lecture_name이 올해부터 Java 객체지향프로그래밍으로 바뀐다고 가정하자. 모든 Java 프로그래밍 속성 값을 update해야 하는데 모르고 빼먹고 어떤 인스턴스의 속성값은 변경을 못할수도 있다.

릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 것을 갱신 이상이라 한다.

삭제 이상(Deletion Anomaly)

홍길동의 데이터를 삭제한다고 가정하자. 삭제될 때 화학과의 데이터도 같이 삭제가 되게 된다.

이렇게 의도하지 않은 데이터가 삭제되게 되는 현상을 삭제 이상이라 한다.

Reference

0개의 댓글