정규화는 데이터베이스 설계 시 중복을 최소화하고 데이터 무결성을 보장하기 위한 과정입니다.
제1정규화(1NF)
핵심: 모든 속성이 원자값(atomic value)을 가져야 함
설명: 하나의 셀에는 하나의 값만 존재해야 합니다.
예시:
- 비정규화: 학생(학번, 이름, 수강과목)
- 레코드 1 : (1001, 김철수, '수학, 영어, 과학')
- 1NF: 학생(학번, 이름, 수강과목)
- 레코드1: (1001, 김철수, 수학)
- 레코드2: (1001, 김철수, 영어)
- 레코드3: (1001, 김철수, 과학)
제2정규화(2NF)
핵심: 1NF를 만족하며, 부분 함수 종속성을 제거
설명: 기본키가 복합키일 때, 일부 컬럼이 기본키의 일부에만 종속되는 경우를 제거합니다.
예시:
- 1NF: 수강정보(학번, 과목코드, 학생이름, 과목명, 성적)
- 여기서 기본키는 (학번, 과목코드)
- 2NF:
- 학생(학번, 학생이름)
- 과목(과목코드, 과목명)
- 수강(학번, 과목코드, 성적)
제3정규화(3NF)
핵심: 2NF를 만족하며, 이행적 종속성을 제거
설명: 기본키가 아닌 컬럼이 다른 비기본키 컬럼에 종속되는 경우를 제거합니다.
예시:
- 2NF: 학생(학번, 학생이름, 학과코드, 학과명, 학과장)
- 학과명과 학과장은 학과코드에 종속
- 3NF:
- 학생(학번, 학생이름, 학과코드)
- 학과(학과코드, 학과명, 학과장)
각 정규화 단계를 거치면서 데이터의 중복이 줄어들고, 데이터 관리가 더 용이해집니다.
반응형
'서버 개발 > 데이터베이스 일반' 카테고리의 다른 글
[MSSQL] 데이터 저장 구조 (0) | 2020.05.03 |
---|---|
Nested Loops/Sort Merge/Hash Join (0) | 2020.05.01 |
OLTP, OLAP, DW (0) | 2020.03.25 |
SQL의 분류 DML/DDL/DCL/TCL (0) | 2020.03.25 |