정보처리산업기사_실기_기록용

[데이터베이스] 정규화 - 이상(Anomaly)

칼퇴하는 한개발 2021. 10. 4. 15:43
반응형

[출처] 2020 시나공 기본서 정보처리산업기사 실기

 

 

이상이란?
테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복으로 인해 테이블 조작 시 문제가 발행하는 현상을 의미

 

*중요! 이상이 발생하는 원인과 이상의 종류 기억하기

1. 이상의 종류

  1. 삽입 이상 : 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
  2. 삭제 이상 : 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발행하는 현상
  3. 갱신 이상 : 튜플에 있는 속성 값을 갱신할 때 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

예시) <수강> 테이블

학번 과목번호 성적 학년
100 C413 A 4
100 E412 A 4
200 C123 B 3
300 C312 A 1
300 C324 C 1
400 C123 A 4
400 C413 B 4
400 E412 C 4
500 C312 B 2

1)

<수강> 테이블에서 학번이 '600'인 학생의 학년이 '2'하는 사실만을 삽입하고자 하는 경우 → 삽입 이상 발생

 : <수강> 테이블의 기본키는 학번과 과목번호이기 때문에 삽입할 때 반드시 과목번호의 데이터도 필요!

 

2)

<수강> 테이블에서 학번이 '200'인 학생이 과목번호 'C123'인 과목을 취소하고자 하는 경우 → 삭제 이상 발생

 : 학번이 '200'인 학생의 과목번호가 'C123'인 과목을 취소하고자 그 학생의 튜플을 삭제하면 학년의 정보까지 같이 삭제가 됨. 과목만 취소하고자 했지만 유지되어야 할 학년 정보까지 삭제되기 때문에 정보 손실이 발생

 

3)

<수강> 테이블에서 학번이 '400'인 학생의 학년을 4에서 3으로 변경하고자 하는 경우 → 갱신 이상 발생

: 학번이 '400'인 모든 튜플의 학년 값을 갱신해야 하는데 실수로 일부 튜플만 갱신하면, 학번 '400'인 학생의 학년은 '3'과 '4' 2가지 값을 가지게 되어 불일치성이 발생

반응형