˙데이터베이스 정규화
관계형 데이터베이스의 설계에서 중복을 최소화하고, 데이터를 구조화하는 과정을 정규화라고 말한다. 정규화는 비정상적인 데이터 관계 등을 재구성하고 정상화된 관계를 재구성하기 위한 부분에 있다. 즉, 데이터의 일관성이나 데이터 중복, 데이터의 유연성 등을 보장하기 위함이며, 불필요한 데이터를 제거하고 논리적인 데이터 저장 과정을 진행한다.
˙데이터베이스 정규화 목적
정규화의 목적으로는 불필요한 데이터를 제거하고 중복을 최소화하기 위함이다. 특정 테이블에 대하여 구분 없이 모든 정보를 보유하게 된다면, 중복 데이터를 보유하게 되거나 의미 없는 레거시 데이터로 인한 불필요한 메모리 소비가 발생할 수 있기 때문에, 특정 KEY를 통한 테이블 관리가 필요하다. 또한, 데이터의 정확성과 일관성, 유효성 등에 대한 무결정 제약조건의 특징을 보유하기 위함이다. 데이터베이스 관리 측면에 있어서 무결성을 유지하는 것은 사용자의 신뢰를 얻기 위한 가장 중요한 부분으로 DBMS 측면에서의 중요한 부분 중 하나이다. 추가적으로, 이상현상 등을 방지하기 위함이기도 하다.
˙데이터베이스 비정규화
데이터베이스 비정규화는 반정규화라고도 하며, 정규화된 속성과 관계, 엔티티 등을 시스템의 성능 향상 또는 개발과 운영과정의 단순화를 위하여 통합이나 분리 등의 과정을 말한다. 주로, 디스크의 I/O 메모리 사용량이 높아서 성능 저하가 우려되거나, 테이블 간의 JOIN의 비효율성, 조건문의 성능 저하 등을 개선하고자 할 때 주로 사용된다. 자주 사용되는 테이블이나 특정 조건만 사용되는 경우, 대량 데이터가 존재하는 경우, 참조(JOIN)하는 테이블이 비 정상적으로 많이 존재하는 부분들이 주로 대상이 된다.
다만, 비정규화 과정에서 과도한 범위의 데이터를 제어하다 보면 데이터 무결성이나 동기화 같은 측면이 흔들릴 수 있고, 의도치 않게 수행 시간이 늘어날 수도 있으며, 복잡한 쿼리 구문을 유발할 수 있으므로, 주의하여야 한다.
'끄적대기' 카테고리의 다른 글
JavaScript 함수 정의 및 종류 (0) | 2022.08.03 |
---|---|
CI/CD : 지속적 통합과 지속적 제공 (0) | 2022.05.16 |
데이터베이스 ETL : Extract Transform Load (0) | 2022.04.18 |
[Chapter 2] React (0) | 2022.03.24 |
[Chapter 1] NodeJS (0) | 2022.03.24 |