데이터베이스를 설계할 때 자주 등장하는 용어 중 하나가 정규화입니다. 그런데 왜 데이터베이스를 정규화해야 할까요? 오늘은 데이터모델링에서 정규화의 목적과 데이터베이스 정규화의 이점을 알아보겠습니다.
데이터베이스 정규화?
정규화는 데이터 중복성을 줄이고 데이터 무결성을 향상하기 위한 방법입니다. 설계를 통해 엔터티를 분리하고나 속성을 재 구성하는 과정입니다. 여기에는 집합이 모호한 엔티티는 더 작게 나누고 이들 간의 관계를 정의하여 데이터 일관성을 보장하는 작업이 포함됩니다.
1. 정규화(Normalization)
- 함수적 종속성(FD: Functional Dependency) 등과 같은 이론에 근거한 방법론입니다.
- 관계형 데이터베이스 테이블의 삽입·삭제·갱신 이상(Anomaly) 현상 발생을 최소화 기법인데요. 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정입니다.
2. 정규형(NF: Normal Form)
- 정규화 규정. 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성을 말합니다.
- 1 정규형, 2 정규형, 3 정규형, BCNF, 4 정규형, 5 정규형이 있습니다.
3. 함수적 종속성(FD: Functional Dependency)
- 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B 값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 합니다.
- 예. 고객명은 고객주민등록번호에 함수적 종속성이 있습니다.
4. 결정자(Determinant)
- 위, 함수적 종속성 설명에서, 컬럼 A를 결정자라고 합니다. 대부분 Key인 경우입니다.
- Non-Key는 일반 속성(컬럼)을 말하고, 결정자가 아닙니다.
5. 다치종속(MVD: MultiValued Dependency)
- 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치종속되었다고 합니다.
- 학번을 알면 해당 학생의 다수 개 수강과목을 알 수 있을 때, 수강과목은 학번에 다치종속관계입니다.
그렇다면 데이터베이스를 정규화해야 하는 이유는 무엇일까요? 바로 알아보시죠.
1. 데이터 중복성 감소
데이터 중복을 최소화하기 위해서 입니다. 정규화는 엔티티를 분할하여 각 데이터 속성이 한 번만 저장되도록 합니다. 이는 중복을 최소화하고 저장 공간도 절약합니다.
중복성이 적다는 것은 관리할 데이터 인스턴스가 적다는 것을 의미합니다. update, delete, insert가 더욱 간단해집니다. 한마디로 효율적으로 데이터를 관리할 수 있습니다.
데이터 중복으로 인해 데이터의 변경이나 삭제처리 시 복잡도가 증가합니다. 그런 경우 일관성 및 정합성이 훼손될 가능성이 높아집니다.
2. 데이터 무결성 및 일관성 향상
데이터가 한 곳에 저장되면 해당 데이터에 대한 모든 업데이트가 한꺼번에 반영됩니다. 이렇게 하면 데이터가 일관되고 최신 상태로 유지됩니다. 데이터 일관성 향상으로 안정성을 확보할 수 있습니다.
정규화는 primary keys, foreign keys, unique key와 결합하여 작동합니다. 결국 데이터 무결성 제약 조건을 적용하는 데 도움이 되어 데이터의 신뢰성을 보장합니다.
3. 데이터 유지 관리 단순화
데이터가 중복되지 않는 경우 한 곳에서 업데이트하면 되기 때문에 문제가 발생하지 않습니다. 이렇게 하면 업데이트 중에 오류와 불일치가 발생할 가능성이 줄어듭니다.
정규화된 모델은 컬럼 추가 또는 수정과 같은 데이터베이스 구조 변경에 유연합니다. 구조변경이 더 간단해지고 오류 발생 가능성이 줄어듭니다. 데이터의 수정, 삭제에 따른 예기치 않은 오류를 최소화하여 데이터구조의 안정성을 최대화하는 것이 목적입니다.
마치며
모델러 사이에 정규화는 데이터베이스를 설계하는 데 가장 기본이 되는 단계입니다. 관계 모델의 이점을 얻기 위한 공식 같은 설계 방식이기 때문입니다. 정규화의 목적은 데이터 중복을 줄이고, 데이터 무결성을 개선하고, 유지 관리를 단순화하는 것입니다. 정규화를 적용하고 나서 데이터베이스 관리, 확장이 더 좋아지는지 느끼 보시기 바랍니다.
정규화가 왜 중요한지 알았다면, 이제 쉬운 예시를 가지고 1 정규형, 2 정규형, 3 정규형에 대해 알아볼 차례입니다. 아래 링크를 참고하시면 정규화를 이해하는데 도움이 되실 거예요.
'데이터베이스' 카테고리의 다른 글
정규화 과정과 원칙: 쉬운 예시로 1, 2, 3정규형 이해하기 (0) | 2024.06.20 |
---|---|
NULL의 개념, 공백 문자(" "), NA, NaN과 차이점은 뭘까? (0) | 2024.06.19 |
메가커피 vs 매머드커피 상품 모델링 비교 분석 (1) | 2024.06.14 |
Oracle 인덱스 스캔 방식2: Index Skip Scan, Full Scan, Fast Full Scan (0) | 2024.05.28 |
Oracle 인덱스 스캔 방식1: Index Range Scan, Unique Scan (0) | 2024.05.27 |