728x90
정규화란 무엇인가?
정규화는 데이터베이스의 테이블을 설계할 때 데이터를 중복 없이 구성하고, 이상(Anomalies)을 제거하는 과정이다.
이를 통해 데이터 일관성을 유지하고 효율적인 데이터베이스를 설계할 수 있다.
정규화의 목적
- 데이터 중복 제거: 중복으로 인한 저장 공간 낭비를 줄인다.
- 데이터 무결성 보장: 삽입, 삭제, 갱신 시 이상 현상을 방지한다.
- 데이터 유지보수성 향상: 데이터를 논리적으로 분리하여 변경이 쉬워진다.
정규화를 하지 않은 데이터베이스는 삭제, 삽입, 수정 작업에서 문제가 발생할 수 있다. 이를 이상현상(Anomaly)이라고 하며, 주요 사례는 다음과 같다.
삭제 이상(Delete Anomaly)
- 데이터를 삭제하면 의도치 않게 관련된 다른 정보도 삭제되는 문제.
- 예시: 선수 데이터를 삭제하면 "스포츠 경영학" 과목 정보도 손실됨.
삽입 이상(Insert Anomaly)
- 새로운 데이터를 추가하려 할 때, 특정 속성값이 없으면 NULL 값을 삽입해야 하는 문제.
- 예시: 신입생의 정보를 추가하려면 아직 등록하지 않은 강좌 정보를 NULL로 남겨야 함.
수정 이상(Update Anomaly)
- 중복된 데이터의 일부만 수정되어 데이터 불일치가 발생하는 문제.
- 예시: "데이터베이스" 강의실을 수정했는데, 일부 튜플에서 강의실 정보가 여전히 이전 값으로 남아 있음.
단계별 정규화
제1 정규형(1NF)
조건: 모든 열의 값이 원자값(Atomic Value)이어야 한다.
- 문제: 하나의 셀에 여러 값이 들어가 있는 경우.
- 해결: 하나의 컬럼에 하나의 값만 포함되도록 분리.
제2 정규형(2NF)
조건: 1NF를 만족하고, 기본키의 부분 종속성이 없어야 한다.
- 부분 종속성: 기본키의 일부만으로 다른 속성을 결정할 수 있는 경우.
- 해결: 부분 종속 관계를 분리하여 독립된 테이블로 나눔.
제3 정규형(3NF)
조건: 2NF를 만족하고, 기본키가 아닌 열이 이행적 종속성(Transitive Dependency)이 없어야 한다.
- 이행적 종속성: A → B, B → C 관계에서 A가 C를 결정하는 경우.
- 해결: 이행적 종속 관계를 제거하고 독립된 테이블로 분리.
정규화의 장단점
장점
- 데이터 무결성 유지: 중복을 제거하여 데이터 불일치 방지.
- 저장 공간 최적화: 중복된 데이터로 인한 낭비 감소.
- 유지보수 용이: 테이블 설계가 단순해지고 수정 작업이 쉬워짐.
단점
- 성능 저하: 테이블 간 JOIN 연산이 늘어나면 조회 속도가 느려질 수 있음.
- 복잡성 증가: 설계와 구현이 복잡해질 수 있음.
728x90
'DB' 카테고리의 다른 글
[DB] 트랜잭션의 격리 레벨 Isolation Level (2) | 2024.11.19 |
---|---|
관계형 데이터베이스와 비관계형 데이터베이스 (2) | 2024.11.19 |