SIMPOLOR
단순하고 색있게
정규화(Normalization)와 역정규화(Denormalization)
단순색
·
2024년 06월 27일
Database
## 정규화(Normalization) 정규화는 데이터베이스 설계에서 데이터 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구조화하는 과정입니다. 정규화는 데이터베이스를 여러 테이블로 나누어 데이터를 구조화하고, 각 테이블이 하나의 주제를 나타내도록 합니다. ## 정규화의 장점 - **데이터 중복 최소화**: 데이터를 여러 테이블로 나누어 중복을 줄입니다. - **데이터 무결성 보장**: 데이터의 일관성과 정확성을 유지합니다. - **효율적인 데이터 관리**: 데이터를 구조화하여 관리 및 유지보수가 용이합니다. ## 정규화 예제 고객과 주문 정보를 저장하는 데이터베이스를 생각해봅시다. 정규화된 데이터베이스에서는 고객 정보와 주문 정보를 별도의 테이블에 저장합니다. 이 구조는 고객 정보와 주문 정보를 분리하여 데이터 중복을 최소화하고, 데이터 무결성을 보장합니다. ``` CUSTOMER [고객 테이블] - CUSTOMER_ID: 고객 ID - NAME: 이름 - EMAIL: 이메일 ORDER [주문 테이블] - ORDER_ID: 주문 ID - CUSTOMER_ID: 고객 ID - ORDER_DATE: 주문 날짜 ``` ## 정규화의 단계 1. **제 1정규형 (1NF)**: 각 테이블의 모든 필드가 원자 값을 가지도록 합니다. 2. **제 2정규형 (2NF)**: 1NF를 만족하면서, 기본 키에 부분 함수 종속을 제거합니다. 3. **제 3정규형 (3NF)**: 2NF를 만족하면서, 기본 키가 아닌 모든 속성이 기본 키에 이행적 함수 종속을 가지지 않도록 합니다. 4. **BCNF (Boyce-Codd Normal Form)**: 3NF를 만족하면서, 모든 결정자가 후보 키가 되도록 합니다. --- ## 역정규화(Denormalization) 역정규화는 데이터베이스의 성능을 최적화하기 위해 정규화된 테이블들을 결합하여 데이터를 저장하는 과정입니다. 이는 주로 조회 성능을 향상시키기 위해 사용됩니다. ## 역정규화의 장점 - **조회 성능 향상**: 여러 테이블을 조인하지 않고 데이터를 한 번에 조회할 수 있어 성능이 향상됩니다. - **단순화된 쿼리**: 데이터가 결합된 상태로 저장되어 복잡한 조인 쿼리가 필요 없습니다. ## 역정규화의 단점 - **데이터 중복 증가**: 데이터를 결합하여 저장하므로 중복이 발생할 수 있습니다. - **데이터 무결성 유지 어려움**: 중복 데이터의 일관성을 유지하기 위해 추가적인 관리가 필요합니다. ## 역정규화 예제 위의 정규화된 데이터베이스를 역정규화하여 하나의 테이블로 합칠 수 있습니다. 이 구조는 조회 성능을 향상시키지만, 데이터 중복이 발생하고 데이터 무결성을 유지하기 위한 추가적인 관리가 필요할 수 있습니다. ``` CUSTOMER_ORDER [고객-주문 테이블] - ORDER_ID: 주문 ID - CUSTOMER_ID: 고객 ID - NAME: 이름 - EMAIL: 이메일 - ORDER_DATE: 주문 날짜 ``` ## 역정규화의 사용 사례 - **읽기 전용 보고서**: 조회 속도가 중요한 읽기 전용 보고서 시스템에서 역정규화를 사용하여 성능을 최적화합니다. - **대규모 데이터 분석**: 데이터 웨어하우스와 같은 대규모 데이터 분석 시스템에서 역정규화를 사용하여 빠른 데이터 접근을 제공합니다. ## 마무리