→ 정규화는 1~5차까지 있는데 4,5차는 대용량에서 사용하기에 우리는 1~3차를 중심으로 알고 있어도 괜찮다.
→ 정규화의 목정 : 데어터 소거, 이상현상 방지
1) 열은 원자적인 값만 포함한다.
: 원자적이라는 말은 '쪼갤 수 없는, 최소한' 을 의미한다.
중복을 없애기 위해서는 테이블을 쪼갤 수 밖에 없다.
2) 같은 데이터가 여러열에 반복되면 안된다.

→ 예를 들어 위와 같은 테이블이 있다면 동아리에 2개의 값이 있다.
이를 2개의 값을 가지지 않게 나누면 다음처럼 된다.

→ 위처럼 나누면 중복이 생기는데, 중복을 없애줘야한다.

→ 위처럼 테이블을 쪼개면 된다.
⇒ 동아리1, 동아리2 로 나누지 않는 이유
: 원자적인 값은 맞지만 의미하는 것이 중복되기에 1차 정규화에 맞지 않다.
→ 상황(쓰는 목적)에 맞게 사용한다.
예를 들어 부산 남구 용호동이 있다고 한다면, 이를 시, 구, 동으로 나눌 수 있다.
배달을 시킬 때는 부산 남구 용호동이라고 한 덩어리로 사용하지만
부동산에서 집을 알아볼 때는 시, 구, 동을 나눠서 사용한다.
이는 원자성이 깨진 것이 아니라 상관이 없는 것이 맞다.
단지 쓰는 목적에 맞게 저장성이 달라졌을 뿐이다.
완전 함수 종속 구현 = 부분 함수 종속 제거 를 목적으로 한다.
1) 주key가 복합키일 때 발생한다.
2) 하나의 속성으로 주key가 구성된 경우 이미 2차 정규화에 만족한다.

→ 완전 함수 종속 : 복합키로 구성하고 있는 모든 열에 의해 종속된 것
→ 부분 함수 종속 : 복합키로 구성하고 있는 어떤 열에 의해 종속된 것

→ 예를 들어 위 그림에서 복합키로 공급자번호와 부품번호를 가진다.
이때, 소재지는 공급자번호에만 종속적이고 이를 부분 함수 종속이라고 한다.
그리고 수량은 공급자번호와 부품번호 모두에 종속적이고(어떤 공급자가 어떤 부품을 보내느냐에 따라 결정되기 때문) 이를 완전 함수 종속이라고 한다.

이행적(추이적) 함수 종속 제거 를 목적으로 한다.
→ 이행적(추이적) 함수 종속 : 주key가 아닌 다른 열에 종속되어 있는 것
→ 테이블의 모든 열은 주key에 종속되어야 하는데, 주key가 아닌 다른 열에 종속된 것을 제거하는 것이 3차 정규화의 주목적이다.

→ 위 그림에서 a -> b , b -> c 이므로 a -> c 가 되는 것을 얘기한다.

→ 위 그림에서 공급자번호 -> 소재지, 소재지 -> 운송거리 이므로 공급자번호 -> 운송거리가 된다.
이상현상 : 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용
원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.

→ 위의 그림은 2차 정규화의 삽입 이상을 말한다.
삽입할 레코드에 공급자와 소재지만 존재하고 복합키 중 다른 하나인 부품번호는 들어 있지 않다. 삽입할 정보가 부족하기에 발생하는 문제점이다.
정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말한다.

→ 위 그림은 2차 정규화의 갱신 이상을 말한다.
하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말한다.

→ 위 그림은 3차 정규화의 삽입, 갱신, 삭제 이상을 말한다.
삽입 이상 : 주key의 정보가 부족하기에 발생한다.
삭제 이상 : 종속된 다른 정보들이 같이 삭제됨으로 원하지 않은 정보도 같이 삭제되는 문제가 발생한다.
갱신 이상 : 예를 들어 같은 수원에 여러 공급자가 존재할 때, 일부 운송거리만 변경되면 일관성을 잃게 되는 문제가 발생한다.

→ 분리시키면 문제가 줄어든다.