[DB] 이상현상(Anomaly)

giggle·2023년 8월 13일
0
post-custom-banner

📌 이상현상(Anomaly)이란?

데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하됩니다. 이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생합니다.

📌 이상현상 종류

삽입 이상 (Insertion Anomaly)

삽입 이상은 특정 데이터가 존재하지 않아 중요한 데이터를 데이터베이스에 삽입할 수 없을 때 발생합니다.

  • 새로운 데이터를 삽입할 때 문제가 발생하는 상황을 의미합니다.
  • 예를 들어, 어떤 테이블에서 부분적인 정보만 삽입하면 불필요한 NULL 값이나 부정확한 데이터가 삽입될 수 있습니다.
  • 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음. -> 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함.

갱신 이상 (Update Anomaly)

갱신 이상은 테이블의 특정 데이터를 업데이트했는데, 정상적으로 변경되지 않은 경우와 너무 많은 행을 업데이트할 때 발생합니다.

  • 데이터를 업데이트할 때 일부만 업데이트되어 일관성이 깨지는 상황을 의미합니다.
  • 예를 들어, 같은 정보를 여러 곳에서 중복해서 저장하는 경우, 일부 정보만 업데이트되면 다른 부분의 데이터와 일치하지 않을 수 있습니다.
  • 만약 어떤 학생의 전공 (Department) 이 "컴퓨터에서 음악"으로 바뀌는 경우. -> 모든 Department를 "음악"으로 바꾸어야 함. 그러나 일부를 깜빡하고 바꾸지 못하는 경우, 제대로 파악 못함.

삭제 이상 (Deletion Anomaly)

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

  • 데이터를 삭제할 때 관련 데이터까지 함께 삭제되는 현상을 의미합니다.
  • 예를 들어, 어떤 테이블에서 한 행을 삭제하면 해당 행과 관련된 다른 정보까지 함께 삭제되어 정보의 손실이 발생할 수 있습니다.
  • 만약 어떤 학생이 수강을 철회하는 경우, {Student ID, Course ID, Department, Course ID, Grade}의 정보 중 Student ID, Department 와 같은 학생에 대한 정보도 함께 삭제됨.

참고


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.
post-custom-banner

0개의 댓글