정규화 ( Normalized )

김나현·2025년 3월 15일

정규화란? 하는 이유?

  • 데이터 중복을 줄이고 이상 현상을 방지하기 위해 테이블을 구조적으로 정리하는 과정!
  • 이상현상(Anomaly) : 데이터 삽입, 삭제, 수정 시 발생하는 비정상적인 문제

primary key가 될 수 있는 후보들이 후보키.
그래서 primary key는 정답은 없고 후보키들 중 선택하면 됨.

제 1 정규형

모든 속성이 원자의 값

" 한칸엔 하나의 데이터" - 찾기가 쉽게 하기 위해서

한칸에 여러개의 데이터를 쓰게 되면 만일 골포초급을 수강한 사람을 찾을때
like함수를 써서 포함하는 ~ 이라고 where문을 작성해야 하기 때문이다.

(1차 정규화 된 모습)

제 2 정규형

부분함수 종속 제거. (기본키가 여러 개일 때 일부 컬럼에 종속된 경우 제거)

(정확한 정의) partial depedency를 제거한 테이블

Composite primary key 의 경우 (primary key가 두개의 column이 합해 저서 정의되는 경우) 하나의 Composite primary key 쪽에 종속이 있다면 이것을 partial dependecy라고 한다. 이것을 제거한다.


( composite primary key : 회원번호 + 프로그램 합쳐서 primary key로 )


TIP) 그래서 하나의 column이 primary key라면 (partial dependency가 없기때문에) 해줄 필요가 없이 2차는 만족된다.

제 3 정규형

이행함수 종속 제거. (A → B → C 형태 제거)

primary key 컬럼에 종속이 아닌 일반 column에 종속이 된 경우 빼준다.


BCNF (보이스-코드 정규형)

모든 결정자는 후보키

즉, 결정자이지만 후보키(primary key)가 될수는 없는 경우를 제거.


4차

다치 종속을 제거 (MVD, Multi-Valued Dependency)

"하나의 컬럼이 다른 두 개 이상의 컬럼과 독립적으로 관계를 가지면 안 된다!"


참고/공부한 영상

https://www.youtube.com/watch?v=Y1FbowQRcmI&list=PLulhl8FmN0xRH2zk4e-6J9TN48pgFhuCj&index=2

profile
Let's study hard!

0개의 댓글