glorypang 2025. 10. 23. 21:28
728x90
반응형
SMALL

1) 삽입 이상 (Insertion Anomaly)

  • 정의: 일부 정보만 먼저 넣고 싶은데, 다른 칼럼이 의미 없이 강제 입력되어야 해서 삽입이 불가능하거나 불필요한 값이 들어가는 문제.
  • 예시
    • 테이블: `주문(회원ID, 회원이름, 상품ID, 상품명, 주문일)`
    • 회원을 등록하려는데 아직 상품을 주문하지 않음 → 상품ID/상품명/주문일을 비워둘 수 없어 삽입이 막힘(또는 쓰레기 값 입력).
  • 원인: 한 테이블에 여러 개체(회원·상품·주문) 정보가 섞여 있음(중복/결합 구조).

현재 테이블(회원주문)

회원ID 회원명 상품ID 상품명
100 a 1 A
100 a 2 B
200 b 1 A

문제 상황

새 회원 c를 등록하고 싶은데 아직 주문이 없음 → 상품ID/상품명을 넣을 값이 없어 삽입 곤란
회원ID 회원명 상품ID 상품명
300 c (없음) (없음)

주문이 없는데도 상품 칼럼이 강제되어 삽입 이상 발생.


2) 삭제 이상 (Deletion Anomaly)

  • 정의: 특정 정보만 지우려 했는데, 같이 보관되던 다른 유용한 정보까지 함께 사라지는 문제.
  • 예시
    • 위 테이블에서 마지막 주문 기록(회원 A의 유일한 주문)을 삭제하면, 회원 A의 프로필 정보도 함께 사라짐.
  • 원인: 의존성이 다른 정보를 한 테이블에 같이 저장.

현재 테이블(회원주문)

회원ID 회원명 상품ID 상품명
100 a 1 A
200 b 2 B
300 c 1 A

문제 상황

b의 주문(행) 하나를 삭제하면, 회원 b의 정보(회원ID, 회원명)도 함께 사라짐

 

삭제 후

회원ID 회원명 상품ID 상품명
100 a 1 A
300 c 1 A

주문 행을 지웠을 뿐인데 회원 b 정보까지 소실 → 삭제 이상.


3) 갱신 이상 (Update Anomaly)

  • 정의: 동일한 정보가 여러 행에 중복되어 있어, 값을 바꿀 때 일관되게 모두 수정하지 않으면 불일치 발생.
  • 예시
    • 회원 A의 전화번호가 여러 주문 행에 반복 저장 → 한 줄만 수정하면 전화번호가 행마다 달라지는 불일치.
  • 원인: 중복 데이터가 다수의 튜플에 반복 저장.

현재 테이블(회원주문)

회원ID 회원명 전화 상품ID
100 a 010-1111 1
100 a 010-1111 2

문제 상황

회원 a의 전화번호를 010-2222로 변경하는데 한 행만 수정

 

일부만 갱신 후

회원ID 회원명 전화 상품ID
100 a 010-2222 1
100 a 010-1111 2

동일 정보가 여러 행에 중복 → 일관성 깨짐 → 갱신 이상.


왜 발생하나?

  • 한 테이블이 여러 엔터티/주제를 동시에 담고 있거나, 함수 종속을 위배(부분·이행 종속 등)해서 중복·결합 구조가 생길 때 발생.

이상을 없애는 방법: 정규화

  • 핵심 아이디어: “한 테이블에는 하나의 주제만 담자. 종속성에 따라 테이블을 분해하자.”
728x90
반응형
LIST