관계 이상(Anomaly)

반응형
SMALL

데이터베이스를 정규화하지 않으면 이상(Anomaly) 현상이 발생할 수 있습니다.
이상은 데이터의 삽입, 수정, 삭제 과정에서 논리적 모순이나 데이터 손실이 일어나는 현상입니다.

이번 포스트에서는 삽입 이상 / 삭제 이상 / 갱신 이상을 예시와 함께 정리하고,
정규화의 필요성까지 설명합니다.


1. 이상(Anomaly)이란?

테이블 구조가 잘못되어 데이터 조작 시 불필요한 제약, 손실, 오류가 발생하는 현상

→ 주로 중복 데이터가 존재하거나, 테이블이 비정규형일 때 발생


2. 이상 현상의 종류

✅ 삽입 이상 (Insertion Anomaly)

  • 값이 없어도 되는 컬럼 때문에 전체 행을 삽입할 수 없음
  • 예: 아직 상품을 주문하지 않은 고객 정보를 등록 못하는 경우

✅ 삭제 이상 (Deletion Anomaly)

  • 원하는 정보만 삭제할 수 없고, 의도치 않은 정보까지 함께 삭제되는 현상
  • 예: 주문 정보를 삭제하면 고객 정보도 함께 삭제되는 경우

✅ 갱신 이상 (Update Anomaly)

  • 같은 정보가 여러 곳에 중복되어 있어 수정 시 불일치가 발생
  • 예: 고객 주소를 하나만 수정하고 나머지는 안 바뀌는 경우

3. 예시 테이블

고객명 전화번호 주문번호 상품명
홍길동 010-1234-5678 A001 마우스
홍길동 010-1234-5678 A002 키보드
  • 갱신 이상: 전화번호 수정 시 모든 행을 수정해야 함
  • 삭제 이상: 모든 주문을 삭제하면 고객 정보도 사라짐
  • 삽입 이상: 주문 없이 고객만 등록할 수 없음

4. 해결책 – 정규화

이상 현상은 정규화(Normalization)를 통해 방지할 수 있습니다.

  • 중복 제거
  • 데이터 분리 (개체 단위로 나누기)
  • 테이블 간 관계 설정 (외래키)
반응형
LIST