데이터베이스 이상 현상(Anomaly)
DB
읽는데 4분 소요
처음 쓰여진 날: 2025-09-21
마지막 수정일: 2025-09-21
조회수: 22
요약
데이터베이스에서 발생하는 이상 현상(삽입 이상, 삭제 이상, 갱신 이상)의 개념과 구체적인 예시, 그리고 정규화를 통한 해결 방법을 알아봅니다.
이상 현상(Anomaly)이란?
데이터 중복으로 인해 발생할 수 있는 문제들을 이상 현상이라고 합니다. 다음 표는 각 이상 현상의 유형과 정의를 정리한 것입니다.
이상 현상 유형 | 정의 |
---|---|
삽입 이상 (Insertion Anomaly) | 불필요한 데이터 없이는 원하는 데이터를 삽입할 수 없는 현상 |
삭제 이상 (Deletion Anomaly) | 특정 정보를 삭제하면, 원치 않는 다른 정보까지 함께 삭제되는 현상 |
갱신 이상 (Update Anomaly) | 중복된 데이터 중 일부만 수정되어 데이터 불일치가 발생하는 현상 |

이상 현상 예시
다음 비정규화된 테이블을 통해 각 이상 현상이 어떻게 발생하는지 살펴보겠습니다.
[수강 관리 테이블 - 정규화 전]
학번 | 학생명 | 과목코드 | 과목명 | 교수명 | 교수연락처 |
---|---|---|---|---|---|
1001 | 김철수 | CS101 | 자료구조 | 김교수 | 010-1111-1111 |
1001 | 김철수 | CS202 | 알고리즘 | 이교수 | 010-2222-2222 |
1002 | 이영희 | CS101 | 자료구조 | 김교수 | 010-1111-1111 |
각 이상 현상 발생 시나리오:
- 삽입 이상: 새로운 과목 'CS303 데이터베이스'를 개설했지만, 아직 수강생이 없어서 학번과 학생명 없이는 과목 정보를 저장할 수 없음
- 삭제 이상: 학번 1002 이영희가 CS101 수강을 취소하면, CS101 과목에 대한 정보(과목명, 교수명, 교수연락처)도 함께 사라질 위험
- 갱신 이상: 김교수의 연락처가 바뀌었을 때, 모든 관련 레코드를 찾아 수정해야 하며, 일부만 수정하면 데이터 불일치 발생
이상 현상 해결 방법
위의 이상 현상들은 정규화를 통한 테이블 분리로 해결할 수 있습니다.
[정규화 후 - 테이블 분리]
1. 학생 테이블
학번 | 학생명 |
---|---|
1001 | 김철수 |
1002 | 이영희 |
2. 교수 테이블
교수명 | 교수연락처 |
---|---|
김교수 | 010-1111-1111 |
이교수 | 010-2222-2222 |
3. 과목 테이블
과목코드 | 과목명 | 교수명 |
---|---|---|
CS101 | 자료구조 | 김교수 |
CS202 | 알고리즘 | 이교수 |
CS303 | 데이터베이스 | 박교수 |
4. 수강 테이블
학번 | 과목코드 |
---|---|
1001 | CS101 |
1001 | CS202 |
1002 | CS101 |
적용된 정규화 단계
위의 테이블 분리는 제2정규형(2NF)과 제3정규형(3NF)을 적용한 것입니다.
2NF 적용 (부분 함수 종속 제거)
기본키 (학번, 과목코드)
에서 부분 함수 종속 제거
과목코드 → 과목명
(부분 함수 종속) → 과목 테이블로 분리과목코드 → 교수명
(부분 함수 종속) → 과목 테이블로 분리학번 → 학생명
(부분 함수 종속) → 학생 테이블로 분리
3NF 적용 (이행 함수 종속 제거)
이행 함수 종속 제거
교수명 → 교수연락처
(이행 함수 종속) → 교수 테이블로 분리
해결된 이상 현상
정규화를 통해 다음과 같이 이상 현상들이 해결되었습니다:
- 삽입 이상 해결: 새로운 과목 'CS303 데이터베이스'를 과목 테이블에 독립적으로 저장 가능 (수강생이 없어도 과목 정보 저장 가능)
- 삭제 이상 해결: 이영희가 CS101 수강을 취소해도 과목 테이블의 CS101 정보는 그대로 유지됨
- 갱신 이상 해결: 김교수의 연락처 변경 시 교수 테이블에서 한 번만 수정하면 됨
연습 문제
문제 | 다음 중 삽입 이상(Insertion Anomaly)에 대한 설명으로 올바른 것은? |
답변 | |
정답 | 정답 보기 |
문제 | 데이터베이스에서 이상 현상을 해결하는 가장 기본적인 방법은 무엇인가? |
답변 | |
정답 | 정답 보기 |