728x90
반응형
📌 정규화의 기본 개념
- 정규화는 데이터를 정리하는 과정으로, 관계형 데이터베이스에서 여러 테이블 간의 관계를 정의하는 스키마를 체계적으로 분해해 나가는 것을 말합니다. 이 과정은 여러 단계로 이루어지며, 각 단계에서 데이터 중복을 줄이고, 이상(Anomaly)을 방지하는 데 중점을 둡니다.
- 정규화(Normalization)는 데이터베이스 설계 시 데이터를 구조화하여 데이터의 중복을 최소화하고 무결성을 유지하며, 데이터를 효율적으로 관리할 수 있도록 하는 중요한 과정입니다. 정규화는 관계형 데이터베이스에서 데이터의 일관성과 정확성을 유지하고, 데이터 중복으로 인해 발생할 수 있는 이상 현상을 방지하는 데 중점을 둡니다.
반응형
📌 정규화의 목적
정규화의 주요 목적은 다음과 같습니다:
- 데이터 구조의 안정성 및 무결성 유지: 정규화를 통해 데이터 구조를 체계적으로 관리할 수 있으며, 데이터 간의 종속성을 명확히 하여 데이터의 일관성과 무결성을 유지합니다.
- 효율적인 검색 및 처리: 정규화된 데이터베이스는 불필요한 중복이 없으므로, 데이터를 검색하거나 처리하는 데 있어서 효율적입니다. 이는 쿼리 성능 향상으로 이어질 수 있습니다.
- 데이터 중복 최소화: 데이터를 중복 저장하지 않도록 하여, 저장 공간을 절약하고 데이터의 일관성을 유지합니다.
- 데이터 이상 방지: 정규화되지 않은 데이터베이스는 삽입, 삭제, 갱신 등의 연산에서 의도하지 않은 부작용(이상)이 발생할 수 있습니다. 정규화는 이러한 이상을 방지하는 데 도움을 줍니다.
- 데이터 모형의 단순화: 복잡한 데이터 모델을 단순하게 만들어, 설계 및 유지 관리가 더 쉬워집니다.
728x90
📌 정규화의 단계
정규화는 여러 단계로 나누어지며, 각 단계에서 특정한 데이터 문제를 해결합니다. 정규화의 주요 단계는 다음과 같습니다:
1. 제1정규형(1NF)
- 조건: 모든 속성의 값이 원자값(Atomic Value)을 가져야 합니다.
- 원자값: 더 이상 나눌 수 없는 값입니다. 예를 들어, 하나의 필드에 여러 값이 들어 있는 경우 이를 분리합니다.
- 목표: 테이블의 모든 열이 단일 값을 갖도록 하여, 테이블 구조를 단순화합니다.
2. 제2정규형(2NF)
- 조건: 1NF를 만족하고, 기본키가 아닌 모든 속성이 기본키 전체에 대해 완전 함수 종속(Partial Dependency)이어야 합니다.
- 부분 함수 종속: 기본키의 일부에만 의존하는 속성이 존재하는 경우입니다.
- 목표: 기본키의 일부가 아닌 전체에 대해 종속성을 가지도록 하여, 부분 함수 종속성을 제거합니다.
3. 제3정규형(3NF)
- 조건: 2NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에만 직접 종속되어야 합니다.
- 이행적 함수 종속: A → B, B → C가 있을 때, A → C로 이어지는 종속 관계를 제거합니다.
- 목표: 이행적 함수 종속성을 제거하여 데이터의 일관성을 강화합니다.
4. BCNF(보이스-코드 정규형)
- 조건: 3NF를 만족하고, 테이블의 모든 결정자가 후보키여야 합니다.
- 결정자: 다른 속성을 결정하는 속성입니다.
- 목표: 모든 결정자가 후보키가 되도록 하여, 모든 관계를 정확히 표현합니다.
5. 제4정규형(4NF)
- 조건: BCNF를 만족하고, 다치 종속(Multivalued Dependency)을 제거해야 합니다.
- 다치 종속: 한 속성의 값이 여러 값과 연관되는 경우입니다.
- 목표: 하나의 속성이 여러 값과 연관될 수 있는 다치 종속을 제거합니다.
6. 제5정규형(5NF)
- 조건: 4NF를 만족하고, 조인 종속성(Join Dependency)을 제거해야 합니다.
- 조인 종속성: 테이블을 분리했을 때 다시 조인할 수 없는 경우를 방지합니다.
- 목표: 테이블의 분해로 인해 데이터의 의미가 훼손되지 않도록 합니다.
[정규화 단계 요약]
- 도메인이 원자값 (1NF)
- 부분적 함수 종속 제거 (2NF)
- 이행적 함수 종속 제거 (3NF)
- 결정자이면서 후보키가 아닌 것 제거 (BCNF)
- 다치 종속 제거 (4NF)
- 조인 종속성 제거 (5NF)
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형
'코딩일기 > 자격증' 카테고리의 다른 글
[정보처리기사] 소프트웨어 비용 산정 | LOC (Line of Code) 기법 (0) | 2024.09.04 |
---|---|
[정보처리기사] Java 제어문 | 정보처리기사 실기 기출 문제 (0) | 2024.09.03 |
[정보처리기사] 트랜잭션의 정의와 4가지 특징(ACID) | 2020년 정보처리기사 실기 기출문제 (1) | 2024.08.12 |
[정보처리기사] 네트워크 관련 신기술 용어 정리 | 정보처리기사 기출 정리 (0) | 2024.08.12 |
[정보처리기사] OSI 7계층과 TCP/IP 4계층 기본 개념 | 공통점과 차이점 | 정보처리기사 실기 기출문제 (1) | 2024.08.06 |