CS/데이터베이스

[데이터베이스] 데이터베이스 정규화(Database Normalization)

Heeyeon Choi 2024. 10. 31. 22:33
728x90
데이터의 중복을 최소화하고 데이터 무결성을 유지하기 위해 데이터베이스 테이블을 구조화하는 과정

 

1차 정규화 (1NF: First Normal Form)

  • 목표: 각 열이 원자값(Atomic Value)만을 가지도록 테이블을 구성합니다.
  • 조건:
    • 모든 열은 원자적 값을 가져야 하며, 한 셀에 여러 개의 값이 들어가면 안 됩니다.
    • 테이블에 반복되는 그룹이 없어야 합니다.
  • 예시:
    • 학생 테이블이 학생의 여러 과목 점수를 하나의 셀에 입력한 경우(예: 과목 점수 90, 85, 78 등)는 1NF에 위배됩니다. 과목 점수는 각각 분리하여 입력해야 합니다.
     
-- 비정규화된 테이블 (반복 그룹 포함)
학생ID | 이름   | 과목     | 점수
---------------------------------
1      | 홍길동 | 수학, 영어 | 90, 85

-- 1NF 적용 테이블
학생ID | 이름   | 과목   | 점수
---------------------------
1      | 홍길동 | 수학   | 90
1      | 홍길동 | 영어   | 85

2차 정규화 (2NF: Second Normal Form)

  • 목표: 부분 함수 종속을 제거하여, 기본 키에 종속된 속성만 테이블에 포함합니다.
  • 조건:
    • 1NF를 만족해야 합니다.
    • 기본 키의 모든 구성 요소에 종속적이지 않은 속성은 별도의 테이블로 분리합니다.
    • 부분 함수 종속(기본 키 일부에만 종속된 속성)이 발생하지 않도록 합니다.
  • 예시:
    • 학생ID와 과목을 복합 키로 하는 성적 테이블에서 학생의 이름이 포함된 경우, 이는 학생ID에만 종속적이므로 별도의 학생 테이블로 분리합니다.
     
-- 비정규화된 테이블 (부분 함수 종속 포함)
학생ID | 과목   | 이름   | 점수
----------------------------
1      | 수학   | 홍길동 | 90
1      | 영어   | 홍길동 | 85

-- 2NF 적용 테이블
-- 학생 테이블
학생ID | 이름
----------------
1      | 홍길동

-- 성적 테이블
학생ID | 과목   | 점수
---------------------
1      | 수학   | 90
1      | 영어   | 85

3차 정규화 (3NF: Third Normal Form)

  • 목표: 이행 함수 종속을 제거하여, 기본 키가 아닌 다른 열에 종속되는 열이 없도록 합니다.
  • 조건:
    • 2NF를 만족해야 합니다.
    • 기본 키가 아닌 열이 다른 기본 키가 아닌 열에 이행적으로 종속되지 않도록 합니다.
  • 예시:
    • 학생 테이블에 학과ID와 학과 이름이 포함되어 있는 경우, 학과 이름은 학과ID에만 종속적이므로 별도의 학과 테이블로 분리합니다.
     
-- 비정규화된 테이블 (이행 종속 포함)
학생ID | 이름   | 학과ID | 학과명
-------------------------------
1      | 홍길동 | 101    | 컴퓨터공학
2      | 이순신 | 102    | 기계공학

-- 3NF 적용 테이블
-- 학생 테이블
학생ID | 이름   | 학과ID
----------------------
1      | 홍길동 | 101
2      | 이순신 | 102

-- 학과 테이블
학과ID | 학과명
-----------------
101    | 컴퓨터공학
102    | 기계공학

요약

정규화 단계주요 목표조건

1차 정규화 (1NF) 원자값만 가지도록 테이블 구성 모든 속성이 원자값을 가져야 함
2차 정규화 (2NF) 부분 함수 종속 제거 1NF 만족, 기본 키의 모든 구성 요소에 종속적임
3차 정규화 (3NF) 이행 함수 종속 제거 2NF 만족, 기본 키가 아닌 열이 이행 종속 제거

정규화를 통해 데이터의 중복을 최소화하고 데이터의 무결성을 높여, 데이터베이스의 일관성성능을 최적화할 수 있습니다.

728x90