데이터베이스 이상 현상
IT위키
더 많은 작업
Database Anomaly
- 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상
- 데이터들이 불필요하게 중복되어 릴레이션 조작에 예기치 못한 문제 발생
- 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 때문에 발생
- 삽입할때 잘못 삽입됨, 갱신할때 잘못 갱신됨 등의 일반적인 내용이다. 아래 정규화과정에서 예시 참고
- 삽입 이상(Insertion Anomaly)
- 어떤 사실을 저장하려는데 관계없는 다른 값(특히 기본 키)이 없어서 삽입할 수 없거나, 원하지 않는 값까지 함께 넣어야 하는 현상
- 삭제 이상(Delete Anomaly)
- 한 튜플을 삭제할 때 그 튜플에만 들어 있던 다른 사실까지 함께 잃어버리는 현상
- 갱신 이상(Update Anomaly)
- 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생
- 검색(조회)은 데이터를 바꾸지 않으므로 중복이 있어도 모순이 생기지 않는다. 그래서 이상 현상은 삽입·삭제·갱신 세 가지이고 '검색 이상'은 없다
릴레이션 수강지도(학번, 지도교수, 학과)에서 기본 키는 학번이고, 학번 → 지도교수, 지도교수 → 학과 의 함수 종속이 있다. 학번 → 학과 는 지도교수를 거쳐 성립하는 이행적 함수 종속이다.[1]
| 학번 | 지도교수 | 학과 |
|---|---|---|
| 100 | P1 | 컴퓨터 |
| 200 | P2 | 전기 |
| 300 | P3 | 컴퓨터 |
| 400 | P1 | 컴퓨터 |
- 삽입 이상 - 새 교수 P4 가 전기과 소속이라는 사실만 넣고 싶어도, 지도 학생이 없으면 기본 키인 학번 값이 없어 행을 넣을 수 없다. "교수가 특정 학과에 속한다는 사실만 삽입하는 것"은 불가능하다
- 삭제 이상 - 300번 학생의 행을 지우면 P3 가 컴퓨터과 소속이라는 사실도 함께 사라진다
- 갱신 이상 - P1 의 학과를 바꿀 때 100번 행만 고치고 400번 행을 그대로 두면 P1 의 학과가 두 가지가 되어 모순이 생긴다
- 해결 - 지도교수 → 학과 를 떼어 (학번, 지도교수)와 (지도교수, 학과)로 나누면 제3정규형이 되어 세 이상이 모두 사라진다
데이터베이스 정규화를 통해 해결한다.
- ↑ 「Chapter 8. Data Normalisation」, Database Systems(MIT Notes), University of Cape Town, https://www.cs.uct.ac.za/mit_notes/database/htmls/chp08.html, 확인일: 2026-11-04.