관계형 데이터 모델링 프리미엄 가이드 DB구축 (2014년)
아노말리 0 0 55,315

by 구루비스터디 정규화 아노말리 Anomaly [2018.06.10]


1. 아노말리(Anomaly)

  • 아노말리는 데이터 이상현상으로, 중복된 데이터 때문에 발생함.
  • 어떤 처리를 할 때, 중복된 데이터를 동시에 전부 처리하지 못하고 일부만 처리할 경우 어떤 데이터가 맞는지 모르고 결국 데이터는 이상해짐.
  • 정규형 모델에서는 아노말리가 최소화되며, 중복 데이터를 채택한 모델에는 다음과 같은 아노말리가 발생함.
    • 업데이트 아노말리 : 릴레이션에서 속성의 값을 업데이트할 때 발생하는 데이터 이상 현상
    • 삭제 아노말리 : 릴레이션에서 인스턴스를 삭제할 때 발생하는 데이터 이상 현상
    • 삽입 아노말리 : 릴레이션에 새로운 인스턴스를 삽입할 때 발생하는 데이터 이상 현상


2. 아노말리가 발생할 수 있는 릴레이션 사례-1



1) 업데이트 아노말리

  • '홍길동'이라는 선수의 포지션을 '2루수'로 바꾸면 3개의 인스턴스를 찾아 포지션 속성 값을 '2루수'로 업데이트 해야함.
  • 현재는 인스턴스 개수가 작아 문제가 없지만, 전체 인스턴스 개수가 수천만 건이 되고, 이 중 '홍길동' 데이터가 많을 경우 문제가 될 수 있음.
  • 또한 업데이트 할 속성이 여러 엔터티에 존재할 경우 완벽한 업데이트가 쉽지 않아 아노말리 발생할 수 있음.
  • 정규화를 하여 중복을 제거하면, 중복 데이터가 없어 업데이트를 부분적으로 할 수 없고 하나만 업데이트하면 전체가 업데이트 되므로 관리가 훨씬 수월함.


2) 삭제 아노말리

  • '김길동'의 데이터를 삭제할 경우, '엘리펀츠'와 '타이거즈' 팀의 데이터도 같이 삭제가 되어 문제가 됨.
  • 정규화를 하면 선수 데이터만 삭제할 수 있으므로 팀 데이터는 그대로 유지 가능함.


3) 삽입 아노말리

  • '장길동'이라는 16번의 새로운 선수를 등록해야 하는데, 아직 팀이 정해지지 않을 경우 팀ID를 NULL로 넣어야 하나 주 식별자이므로 등록이 안됨.
  • 선수는 존재하지만 팀이 정해지지 않아 새로운 인스턴스를 넣지 못하는 상황이 발생됨.
  • 정규화를 하면 팀이 정해지지 않아도 선수만 따로 등록할 수 있음.


3. 아노말리가 발생할 수 있는 릴레이션 사례-2

  • 선수 데이터를 관리하는 릴레이션으로 소속팀에 대한 데이터까지 관리하는 잘못 설계된 릴레이션



4. 정규화된 릴레이션

  • '릴레이션 사례-1'의 내용을 정규화한 내용




"구루비 데이터베이스 스터디모임" 에서 2014년에 "관계형 데이터 모델링 프리미엄 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3595

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입