데이터베이스 이상 현상(Anomaly)

DB
읽는데 4분 소요
처음 쓰여진 날: 2025-09-21
마지막 수정일: 2025-09-21

요약

데이터베이스에서 발생하는 이상 현상(삽입 이상, 삭제 이상, 갱신 이상)의 개념과 구체적인 예시, 그리고 정규화를 통한 해결 방법을 알아봅니다.

이상 현상(Anomaly)이란?

데이터 중복으로 인해 발생할 수 있는 문제들을 이상 현상이라고 합니다. 다음 표는 각 이상 현상의 유형과 정의를 정리한 것입니다.

이상 현상 유형정의
삽입 이상
(Insertion Anomaly)
불필요한 데이터 없이는 원하는 데이터를 삽입할 수 없는 현상
삭제 이상
(Deletion Anomaly)
특정 정보를 삭제하면, 원치 않는 다른 정보까지 함께 삭제되는 현상
갱신 이상
(Update Anomaly)
중복된 데이터 중 일부만 수정되어 데이터 불일치가 발생하는 현상
이상 현상 감자
이상 현상 감자

이상 현상 예시

다음 비정규화된 테이블을 통해 각 이상 현상이 어떻게 발생하는지 살펴보겠습니다.

[수강 관리 테이블 - 정규화 전]

학번학생명과목코드과목명교수명교수연락처
1001김철수CS101자료구조김교수010-1111-1111
1001김철수CS202알고리즘이교수010-2222-2222
1002이영희CS101자료구조김교수010-1111-1111

각 이상 현상 발생 시나리오:

  1. 삽입 이상: 새로운 과목 'CS303 데이터베이스'를 개설했지만, 아직 수강생이 없어서 학번과 학생명 없이는 과목 정보를 저장할 수 없음
  2. 삭제 이상: 학번 1002 이영희가 CS101 수강을 취소하면, CS101 과목에 대한 정보(과목명, 교수명, 교수연락처)도 함께 사라질 위험
  3. 갱신 이상: 김교수의 연락처가 바뀌었을 때, 모든 관련 레코드를 찾아 수정해야 하며, 일부만 수정하면 데이터 불일치 발생

이상 현상 해결 방법

위의 이상 현상들은 정규화를 통한 테이블 분리로 해결할 수 있습니다.

[정규화 후 - 테이블 분리]

1. 학생 테이블

학번학생명
1001김철수
1002이영희

2. 교수 테이블

교수명교수연락처
김교수010-1111-1111
이교수010-2222-2222

3. 과목 테이블

과목코드과목명교수명
CS101자료구조김교수
CS202알고리즘이교수
CS303데이터베이스박교수

4. 수강 테이블

학번과목코드
1001CS101
1001CS202
1002CS101

적용된 정규화 단계

위의 테이블 분리는 제2정규형(2NF)제3정규형(3NF)을 적용한 것입니다.

2NF 적용 (부분 함수 종속 제거)

기본키 (학번, 과목코드)에서 부분 함수 종속 제거

  • 과목코드 → 과목명 (부분 함수 종속) → 과목 테이블로 분리
  • 과목코드 → 교수명 (부분 함수 종속) → 과목 테이블로 분리
  • 학번 → 학생명 (부분 함수 종속) → 학생 테이블로 분리

3NF 적용 (이행 함수 종속 제거)

이행 함수 종속 제거

  • 교수명 → 교수연락처 (이행 함수 종속) → 교수 테이블로 분리

해결된 이상 현상

정규화를 통해 다음과 같이 이상 현상들이 해결되었습니다:

  • 삽입 이상 해결: 새로운 과목 'CS303 데이터베이스'를 과목 테이블에 독립적으로 저장 가능 (수강생이 없어도 과목 정보 저장 가능)
  • 삭제 이상 해결: 이영희가 CS101 수강을 취소해도 과목 테이블의 CS101 정보는 그대로 유지됨
  • 갱신 이상 해결: 김교수의 연락처 변경 시 교수 테이블에서 한 번만 수정하면 됨

연습 문제

문제
다음 중 삽입 이상(Insertion Anomaly)에 대한 설명으로 올바른 것은?
답변
정답정답 보기
문제
데이터베이스에서 이상 현상을 해결하는 가장 기본적인 방법은 무엇인가?
답변
정답정답 보기