🐲정규화(Normalization)는 데이터베이스 설계에서 데이터의 중복을 줄이고 데이터 무결성을 높이기 위해 사용하는 과정입니다. 정규화는 데이터베이스의 구조를 체계적으로 개선하여, 데이터를 보호하고 중복된 데이터와 일관되지 않은 종속성을 제거하여 데이터의 삽입, 삭제, 수정 시 발생할 수 있는 이상 현상(anomaly)을 방지하는 것을 목표로 한다. 예를 들어, '고객 주소' 변경은 해당 데이터가 Customers 테이블에만 저장되고 데이터베이스의 다른 테이블에는 저장되지 않으면 구현하기가 더 쉽다.정규화는 여러 단계로 나뉘며, 각 단계는 정규형(Normal Form)으로 정의된다.
🐲 정규화의 목적
- 데이터 중복 최소화: 중복된 데이터는 디스크 공간을 낭비하고 유지 관리 문제를 일으키므로 동일한 데이터가 여러 곳에 저장되지 않도록 하여 저장 공간을 절약하고 데이터 일관성을 유지시킨다.
- 데이터 무결성 향상: 데이터의 일관성을 유지하고, 잘못된 데이터 입력을 방지한다.
- 이상 현상 방지: 삽입, 삭제, 수정 시 발생할 수 있는 문제를 예방한다.
🐲 정규형(Normal Form)
정규화는 일반적으로 여러 단계로 나뉘며, 각 단계는 특정한 조건을 만족해야 합니다. 주요 정규형은 다음과 같다.
- 제1정규형(1NF)
정의: 엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때 하나의 속성이 단일 값(atomic value)을 갖도록 하는 것이다.
조건:테이블의 모든 필드가 단일 값을 가져야 하며, 반복되는 그룹이 없어야 하며 각 레코드는 고유해야 한다.
- 제2정규형(2NF)
정의: 제1정규형을 만족하고, 주식별자(pk)가 아닌 속성 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 과정이다.
조건:기본 키의 일부에만 의존하는 비주요 속성이 없어야 한다. 즉, 기본 키의 모든 부분에 종속될 것.
- 제3정규형(3NF)
정의: 제2정규형을 만족하고, 주식별자(pk)가 아닌 속성들 중에서 종속 관계엥 있는 속성을 찾아 제거하는 과정이다.
조건:비주요 속성이 다른 비주요 속성에 종속되지 않아야 한다.
🐲 정규화의 과정
정규화는 다음과 같은 단계로 진행된다
① 데이터 수집: 데이터베이스에 저장할 데이터를 정의하고 수집한다.
② 1NF 변환: 데이터를 원자적인 형태로 변환하여 1NF를 만족하도록 한다.
③ 2NF 변환: 비주요 속성이 기본 키에 완전 함수 종속되도록 테이블을 분리한다.
④ 3NF 변환: 비주요 속성이 다른 비주요 속성에 의존하지 않도록 다시 테이블을 분리한다.
🐲 정규화의 장단점
◎장점
- 데이터 중복 감소로 인한 저장 공간 절약
- 데이터 무결성 유지
- 데이터의 일관성 확보
◎ 단점
- 지나치게 정규화하면 데이터 조회 시 조인이 많이 발생하여 성능 저하
- 복잡한 쿼리가 필요할 수 있음
🐲 결론
- 정규화는 데이터베이스 설계에서 필수적인 과정으로, 데이터의 중복을 줄이고 무결성을 높이는 데 중요한 역할을 한다. 그러나 정규화의 정도는 시스템의 요구 사항과 성능을 고려하여 적절히 결정해야 한다. 필요에 따라 비정규화(denormalization) 과정을 통해 성능을 최적화하는 것도 중요하다.
참고
https://galaktika-soft.com/blog/data-mining-normalization.html
'기타' 카테고리의 다른 글
마크다운 읽기 (0) | 2024.11.08 |
---|---|
H2 console사용하기 (2) | 2024.11.08 |
웹 서버 웹 애플리케이션 서버 동작 방식 (0) | 2024.08.05 |
개발자를 위한 유용한 사이트 모음(추후 계속 업데이트) (0) | 2024.08.04 |
1주차(컴퓨터개론) (0) | 2024.08.01 |