이상(Anomaly)
이상(Anomaly)
Prerequisite
- RDBMS(Relational Database Management System) 이란?
- 관계형 데이터베이스는 데이터가 열과 행의 테이블 (또는 ‘관계’) 하나 이상에 저장되는 사전 정의된 관계로 데이터를 구성하는 정보의 모음
- 정형화된 데이터를 RDBMS로 관리하면 좋은 이유?
- 공통 속성을 이용하여 모든 테이블을 다른 테이블과 연관시킬 수 있음
- 데이터의 관리에 용이 (정합성 [
anomaly
관련])
- 데이터의 관리에 용이 (정합성 [
- SQL(Structured Query Language) 사용 가능
- 스키마 형식으로 미리 저장될 데이터의 형식을 정할 수 있음
- 데이터의 validation에 용이
- 성능 측면
- Indexing 기능을 제공하여, 데이터 검색의 성능을 높힐 수 있음
- 공통 속성을 이용하여 모든 테이블을 다른 테이블과 연관시킬 수 있음
이상 현상(Anomaly)?
좋은 RDBMS 설계는 정보의 이상 현상(Anomaly)가 생기지 않도록 고려하는 것 뿐만 아니라, 성능 측면을 고려하여 적절하게 trade-off 하는 것
RDBMS에서 이상 현상은 크게 3가지로 구분된다.
- 삽입 이상 (Insertion Anomaly)
- 불필요한 정보를 함께 저장하지 않고서는 특정 정보를 저장하는 것이 불가능
- e.g.) 아래의 테이블에서 lecture를 수강하지 않는 사람에 대해서, 데이터를 삽입하기 위해서 lecture 정보를 null로 채워야함
- 삭제 이상 (Deletion Anomaly)
- 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능
- e.g.)
알고리즘
강의를 삭제하기 위해서, 의도하지 않은 student 정보가 삭제됨
- 갱신 이상 (Modification Anomaly)
- 중복되는 데이터 중에 일부를 갱신할 경우에 데이터의 불일치가 발생하는 현상
- e.g.)
lecture_id
가A
인 강의에 대해서 이름을 수정할 경우 1, 4번째 튜플의lecture_name
을 전부 변경하지 않으면 데이터의 불일치 현상이 발생
grade | name | age | gender | lecture_id | lecture_name | tel |
---|---|---|---|---|---|---|
1 | 강민준 | 27 | M | A | 알고리즘 | null |
2 | 준강민 | 25 | M | B | 자료구조 | null |
3 | 민준강 | 24 | F | C | 이산수학 | null |
4 | 민준 | 29 | M | A | 알고리즘 | null |
5 | 준민 | 33 | F | E | 컴퓨터네트워크 | null |
데이터베이스 설계 기법에 따라서 정보간의 관계를 잘 정의하는 것으로 이상현상을 예방할 수 있다.
이러한 과정을 정규화(Normalization)
이라고 한다.
무조건 정규화 수준이 높다고 좋은 것이 아니라, 정규화 과정을 통해서 테이블이 분리되게 되는데 Aggregation이 필요할 경우 JOIN 연산을 요구한다.
이 때의 성능 저하를 고려하여 상황에 맞게끔 적절한 수준으로 정규화를 수행하는 것이 적절하다.
이와 관련해서는 추후정규화 관련 포스트
를 작성하면서 다뤄볼 예정이다.
This post is licensed under CC BY 4.0 by the author.