데이터베이스 정규화

지수 🤓·2020년 5월 20일
0

개념 정리

목록 보기
13/17
post-thumbnail
post-custom-banner

한 릴레이션에서 여러 엔티티의 속성들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 중복된 정보로 인해 갱신 이상이 발생하게 된다. 이런 문제를 해결하기 위해 정규화 과정을 거친다.

갱신 이상의 종류

  • 삽입 이상 : 원치 않는 자료가 삽입 되거나, 자료가 부족해 삽입이 되지 않아 발생
  • 삭제 이상 : 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제되면서 원치않는 정보 손실이 발생
  • 갱신 이상 : 정확하지 않거나 일부만 갱신되어 일관성이 없어져 정보 파악이 되지 않음

정규화를 하는 이유

중복을 최소화하기 위해 데이터를 구조화하는 작업. 좋은 작은 릴레이션으로 분해하는 작업이다.

나쁜 릴레이션은
엔티티를 구성하고 있는 속성 간에 함수적 종속성으로 판단한다.

함수적 종속성
X와 Y를 임의의 속성 집합이라고 할 때, X의 값이 Y의 값을 유니크하게 결정한다면 X는 Y를 함수적으로 결정한다고 한다.
실세계에서 존재하는 속성 사이의 제약조건으로부터 유도된다.

장점

  • 정규화를 하게 되면 각종 이상 현상을 제거할 수 있다.
  • 새로운 데이터 추가로 인한 확장 시, 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.

단점
릴레이션 분해로 인해 join연산이 많아진다.

제 1정규형

각 로우마다 컬럼의 값이 1개씩만 가지는 경우.
각 컬럼이 원자값을 가진다고 할 수 있다.

제 2정규형

기본 키를 제외한 컬럼들이 기본 키에 대해서 완전 함수적 종속이면 된다. 즉, 키가 아닌 열들이 각각 후보 키에 대해 결정되는 릴레이션 형태

제 3정규형

비주요 속성도 기본 키에 대해서 이행적으로 종속되지 않으면 된다. 기본키 이외의 다른 컬럼이 그외 다른 컬럼을 결정할 수 없다.

BCNF정규형

여러 후보 키가 존재하는 릴레이션에 해당하는 정규화 내용이다. 3차정규형을 만족하면서 모든 결정자가 후보키(기본키로 사용할 수 있는 속성) 집합에 속한 정규형

profile
Backend Junior Developer
post-custom-banner

0개의 댓글