데이터베이스 정규화 공부

Model을 디자인 하기 전, 데이터 베이스 정규화가 필요한 이유와 데이터 베이스 정규화 방법을 알아보았다.

※참고





데이터 추상화의 개념

현실 세계를 프로그래밍의 세계로 가져올 때 추상화를 거친다. (모델링)

예를 들어, 대학생을 추상화할 때는 학번, 이름, 학과, 소속 대학 등의 정보만 있으면 된다.

이외에 학생의 머리 색깔은 무엇인지, 소득이 얼마인지는 학생을 관리할 때 필요하지 않다.

이렇게 현실 세계의 문제를 다룰 때 필요한 정보만 고르는 것을 추상화라고 한다.





데이터베이스 함수적 종속

  • X -> Y 의 관계
  • X : 결정자 / 결정자 X는 항상 고유키나 후보키에 속할 필요 없다.
  • Y : 종속자





데이터베이스 정규화

1NF

하나의 컬럼에는 하나의 값만. 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성



2NF

기본키가 아닌 모든 속성이 기본키에 완전 함수 종속

즉, 결정자 집합을 구성하는 컬럼들 중 일부 컬럼이 별개로 결정자 역할을 하고 있다면 이를 제거해주는 게 2NF이다.

어떻게 제거? 다른 테이블로 분리시킨다.



3NF

  • 이행적 함수적 종속 : 삼단 논법과 같은 관계이다. 하지만 삼단 논법처럼 논리적인 것이 아니다.

  • 학번 -> 학부
  • 학부 -> 등록금
  • 학번 -> 등록금

위와 같은 관계가 있을 때 학번은 학부를 결정 짓고, 학부는 등록금을 결정지을 수 있지만, 등록금이 학번에 의해 좌우되지는 않는다.

이행적 종속 관계를 나타내는 컬럼들이 있다면 두 모델로 분리한다.

위의 학번, 학부, 등록금 관계를 예로 들면, [학번, 학부], [학부, 등록금]으로 분리해야 한다.