데이터베이스 이상현상과 정규화
데이터베이스 이상현상과 정규화
이상현상과 정규화의 개념
이상현상
- 정상적이지 않은 동작
- 불필요한 데이터 중복으로 인해 데이터들이 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용
이상현상의 종류
삽입 이상(insertion anomaly): 새로운 데이터(튜플)를 삽입하기 위해 내가 원하지 않는 불필요한 데이터(튜플)도 함께 삽입해야 하는 문제
ex) 이벤트 당첨여부에 속성값이 Y, N만 존재 할 때 이벤트에 참여하지 않은 고객은 불필요한 NULL 값이 들어가거나 삽입하지 못하는 이상현상
갱신(수정)이상(update anomaly): 중복되는 튜플 중 일부만 변경하여 똑같은 데이터 임에도 데이터가 불일치하게 되는 모순의 문제
ex) 여러번 이벤트에 참여한 홍길동 고객의 등급이 'gold'에서 'vip'로 변경 되었는데 일부 튜플에 대해서만 등급이 수정된다면 홍길동은 'gold'와 'vip'등급을 둘 다 가지게 되는 모순이 발생
삭제 이상(deletion anomaly): 필요 없는 튜플을 삭제하면 내가 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
ex) 홍길동 고객이 이벤트를 참여 했기 때문에 발생했던 데이터들이 이벤트 참여를 취소해 이벤트 참여와 관련이 없는 반드시 필요한 고객아이디, 고객이름, 등급 데이터까지 모두 손실되는 문제
정규화
- 이상현상을 발생시키는 요인들을 제거하고 이상현상이 일으키는 잘못된 에러 과정들을 일으키지 않도록 데이터베이스를 올바르게 다시 설계해 나가는 과정
- 이상현상이 발생하지 않도록 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 관련이 있는 속성들로만 구성하기 위해서 중복되어있는 릴레이션을 분해하는 과정
- 여러가지 관계를 맺고 있는 함수적 종속성들을 분해하고 제거해나가는 과정
함수적 종속성(Function Dependency)
종속성은 어떤 누군가가 다른 사람에게 영향을 미치는 의미 입니다. 하나가 결정되면 그 하나에 의해서 다른 내용들이 결정됩니다. 한 릴레이션을 구성하고 있는 속성들 간에 종속적인 관계들이 구성되지 않도록 분해해 이상현상이 발생하지 않는 바람직한 릴레이션으로 만들어나가는 과정입니다.
댓글
댓글 쓰기