정규화는 데이터 중복을 줄이고, 갱신 이상(Update Anomaly)을 방지하기 위한 설계 기법이다.
핵심은 함수 종속성(Function Dependency) 을 제거하는 것이다.
모든 컬럼은 원자값(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)
);
emp_supervisor_id에 여러 상사 ID가 들어갈 수 있음
예: "2,3"
➡️ 원자성 위반
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 만족