정규화 비정규화 다이어그램
정규화 (Normalization) 데이터베이스란
정규화의 기본목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Intergrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 또한 이상문제( 삽입이상, 삭제이상, 갱신이상 등)를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정이다. 테이블을 어떻게 분해하는지에 따라 정규화 단계가 달라지는데, 제 1정규화, 제 2 정규화, 제 3 정규화, BCNF 정규화, 제 4 정규화, 제 5 정규화로 구성되어있다.
비정규화(Denoramlizaiton) 데이터베이스란
비정규화는 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상 및 개발과 운영의 단순화를 위해 중복 통합, 분리 등을 수행하는 데이터 모델링 기법 중 하나이다.
-목적
정규화 데이터베이스
- 불필요한 데이터제거 (ex. 중복된 데이터)
- 논리적인 데이터 저장 (ex. 생성,삽입,삭제 등 이상현상 방지)
- 데이터베이스 구조 확장 시 재디자인을 최소화
- 다양한 관점에서의 query를 지원하기 위함
- 무결성 제약조건의 시행을 간단하게 하기 위함
비정규화 데이터베이스
- 비정규(Denoramlizaiton)는 데이터를 중복시키거나 그룹핑함으로써 데이터베이스의 성능을 향상시키기 위한 기법
- 테이블끼리 경로가 너무 멀어 조인으로 인한 성능저하를 방지하기 위함
- 칼럼을 계산하여 조회할 때 성능이 저하될 것을 방지하기 위함
- 대량의 데이터 범위를 자주 처리하는 경우 성능이 저하되는 것을 방지하기 위함
- 높은 규모 확장성을 실현하기 위해 자주 사용 되는 기법
-장단점
정규화 데이터베이스
장점
- 목적에서 언급했던 각종 이상현상들이 발생하는 문제점을 해결할 수 있다.
- 데이터베이스 구조 확장 시 새로운 데이터 형의 추가로 인해 그 구조의 변경이 없거나 최소화 할 수 있어, 응용프로그램의 생명을 연장시킨다
- 사용자에게 데이터 모델을 더욱 의미있게 제공. 정규화된 테이블들과 정규화된 테이블들 간의 관계들은 현실 세계에서의 개념들과 그들간의 관계들을 반영한다.
단점
- 릴레이션 분해로 인해 릴레이션 간의 연산(JOIN 연산)이 많아진다. 이로인해 질의에 대한 응답시간이 느려질 수 있다
비정규화 데이터베이스
장점
- 빠른 데이터 조회 → JOIN 비용 감소
- 데이터 조회 쿼리가 간단해짐 → 버그 발생 가능성 저하
- 대용량 데이터의 빈번한 조회 시 성능 향상
단점
- 비정규화를 과도하게 적용하다 보면 데이터의 무결성이 깨질 수 있다.
- 데이터 갱신 또는 삽입의 비용이 높아지고, 작성하기 어려워진다.
- 중복데이터가 많아져 저장 공간을 낭비하게 된다.