[DB] 이상 현상: 삽입 이상, 갱신 이상, 삭제 이상

안녕하·2023년 11월 27일
0

데이터베이스

목록 보기
17/21

이상 현상

  • 데이터베이스를 잘못 설계하면 데이터 중복이 발생하여 데이터 삽입/수정/삭제 연산 시 부작용이 발생할 수 있음
  • 이러한 부작용을 이상 현상이라고 한다



이상 현상의 종류

  1. 삽입 이상
    • 데이터 삽입 시 불필요한 데이터도 삽입해야 하는 문제
  2. 갱신 이상 (수정 이상)
    • 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순 문제
  3. 삭제 이상
    • 튜플을 삭제하면 필요한 데이터까지 함께 삭제되는 데이터 손실 문제



1. 삽입 이상

  • 릴레이션에 데이터를 삽입할 때 불필요한 데이터도 함께 삽입해야 하는 문제

삽입 이상 예시

  • 이벤트 참여 릴레이션(id, event_id, winnerstatus, name, membership_level)이 있다.

  • 아이디가 melon인 신규 회원이 가입하여 해당 릴레이션에 추가해야 한다

    • melon 고객은 아직 참여한 이벤트가 없다
  • 이벤트 참여 릴레이션의 기본키는 (id, event_id)이고, NULL이 허용되지 않는다

  • melon 고객을 릴레이션에 삽입하려면 참여하지 않는 임시 event_id를 삽입해야 한다 (삽입 이상 발생)




2. 갱신 이상

  • 릴레이션의 중복된 튜플 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 것

갱신 이상 예시

  • 이벤트 참여 릴레이션(id, event_id, winnerstatus, name, membership_level)이 있다.
  • 한 고객이 이벤트에 2번 참여하여 릴레이션에 아이디가 같은 고객이 2명이 존재한다.
    • (apple, 1, Y, 홍길동, gold)
    • (apple, 2, N, 홍길동, gold)
  • 해당 고객의 등급이 gold에서 vip로 변경된다면 두 개의 튜플 모두 수정되어야 한다.
  • 이때 하나의 튜플만 등급이 수정되면 apple 고객에 대한 모순이 생긴다
    • (apple, 1, Y, 홍길동, vip)
    • (apple, 2, N, 홍길동, gold)



3. 삭제 이상

  • 릴레이션에서 튜플을 삭제할 때 필요한 데이터까지 삭제되어 데이터가 손실되는 연쇄 삭제 현상

삭제 이상 예시

  • 이벤트 참여 릴레이션(id, event_id, winnerstatus, name, membership_level)이 있다.

  • 아이디가 orange인 고객이 이벤트 참여를 취소하여 튜플을 삭제해야 한다

  • 이벤트 정보뿐 아니라 고객 id와 name, membership_level도 정보도 손실된다 (삭제 이상 발생)




출처: 데이터베이스 개론

profile
세요

0개의 댓글