1. 정규화(Normalization)

정규화는 데이터 중복을 줄이고, 갱신 이상(Update Anomaly)을 방지하기 위한 설계 기법이다.

핵심은 함수 종속성(Function Dependency) 을 제거하는 것이다.


1️⃣ 1정규화 (1NF)

정의

모든 컬럼은 원자값(Atomic Value)만 가져야 한다.

즉, 하나의 컬럼에 여러 값이 들어가면 안 된다.


❌ 정규화 전 테이블 (문제 있음)

CREATE TABLE emp_tb (
  idINTPRIMARY KEY,
  emp_nameVARCHAR(50),
  emp_position_nameVARCHAR(50),
  emp_supervisor_idVARCHAR(50),-- 문제 포인트
  dept_idINT,
  dept_nameVARCHAR(50),
  dept_locVARCHAR(50)
);

문제점


✅ 1NF 적용 (테이블 분리)

CREATE TABLE emp_tb (
  idINTPRIMARY KEY,
  emp_nameVARCHAR(50),
  emp_position_nameVARCHAR(50),
  dept_idINT,
  dept_nameVARCHAR(50),
  dept_locVARCHAR(50)
);

CREATE TABLE supervisor_tb (
  idINTPRIMARY KEY,
  emp_idINT,
  supervisor_idINT
);

✔️ 한 행에는 하나의 상사 관계만 존재

✔️ 1NF 만족


2️⃣ 2정규화 (2NF)

정의