Post

이상(Anomaly)

이상(Anomaly)

Prerequisite

  • RDBMS(Relational Database Management System) 이란?
    • 관계형 데이터베이스는 데이터가 열과 행의 테이블 (또는 ‘관계’) 하나 이상에 저장되는 사전 정의된 관계로 데이터를 구성하는 정보의 모음
  • 정형화된 데이터를 RDBMS로 관리하면 좋은 이유?
    • 공통 속성을 이용하여 모든 테이블을 다른 테이블과 연관시킬 수 있음
      • 데이터의 관리에 용이 (정합성 [ anomaly 관련])
    • SQL(Structured Query Language) 사용 가능
    • 스키마 형식으로 미리 저장될 데이터의 형식을 정할 수 있음
      • 데이터의 validation에 용이
    • 성능 측면
      • Indexing 기능을 제공하여, 데이터 검색의 성능을 높힐 수 있음

이상 현상(Anomaly)?

좋은 RDBMS 설계는 정보의 이상 현상(Anomaly)가 생기지 않도록 고려하는 것 뿐만 아니라, 성능 측면을 고려하여 적절하게 trade-off 하는 것

RDBMS에서 이상 현상은 크게 3가지로 구분된다.

  1. 삽입 이상 (Insertion Anomaly)
    • 불필요한 정보를 함께 저장하지 않고서는 특정 정보를 저장하는 것이 불가능
    • e.g.) 아래의 테이블에서 lecture를 수강하지 않는 사람에 대해서, 데이터를 삽입하기 위해서 lecture 정보를 null로 채워야함
  2. 삭제 이상 (Deletion Anomaly)
    • 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능
    • e.g.) 알고리즘 강의를 삭제하기 위해서, 의도하지 않은 student 정보가 삭제됨
  3. 갱신 이상 (Modification Anomaly)
    • 중복되는 데이터 중에 일부를 갱신할 경우에 데이터의 불일치가 발생하는 현상
    • e.g.) lecture_idA 인 강의에 대해서 이름을 수정할 경우 1, 4번째 튜플의 lecture_name을 전부 변경하지 않으면 데이터의 불일치 현상이 발생
gradenameagegenderlecture_idlecture_nametel
1강민준27MA알고리즘null
2준강민25MB자료구조null
3민준강24FC이산수학null
4민준29MA알고리즘null
5준민33FE컴퓨터네트워크null

데이터베이스 설계 기법에 따라서 정보간의 관계를 잘 정의하는 것으로 이상현상을 예방할 수 있다.

이러한 과정을 정규화(Normalization) 이라고 한다.

무조건 정규화 수준이 높다고 좋은 것이 아니라, 정규화 과정을 통해서 테이블이 분리되게 되는데 Aggregation이 필요할 경우 JOIN 연산을 요구한다.
이 때의 성능 저하를 고려하여 상황에 맞게끔 적절한 수준으로 정규화를 수행하는 것이 적절하다.
이와 관련해서는 추후 정규화 관련 포스트를 작성하면서 다뤄볼 예정이다.

This post is licensed under CC BY 4.0 by the author.