Skip to content

Latest commit

 

History

History
59 lines (35 loc) · 2.43 KB

CS_STUDY_WEEK1_1.md

File metadata and controls

59 lines (35 loc) · 2.43 KB

CS Study WEEK1 1ST

1주차 1 - DB 설계 시 정규화를 하는 이유

데이터베이스 정규화

데이터베이스에서의 정규화란 관계형 데이터베이스(RDBMS) 설계 시, 중복을 최소화하도록 데이터를 구조화하는 작업을 말합니다.

그렇다면 정규화를 하는 이유는?

중복된 데이터를 제거함으로써, 데이터의 중복으로 인해 발생할 수 있는 이상 현상(삽입 이상, 갱신 이상, 삭제 이상)을 사전에 제거하는 것입니다.

이 때, 이상현상이란 중복된 데이터를 동시에 처리하지 못하면서 발생하는 문제로, 일부만 처리함으로써 데이터의 정확성을 보장할 수 없게 됩니다.

삽입 이상

  • 릴레이션에서 새로운 인스턴스를 삽입할 때, 의도와 상관없는 값들도 함께 삽입

갱신 이상

  • 릴레이션에서 속성의 값을 갱신(업데이트)할 때, 일부만 갱신되어 정보에 모순이 발생

삭제 이상

  • 릴레이션에서 인스턴스를 삭제할 때, 의도하지 않은 값이 함께 삭제

정규화 과정

정규화에는 제1정규형, 제2정규형, 제3정규형, BCNF 정규형 등이 있습니다.

제1정규형

  • 속성의 도메인이 오직 원자값(atomic)만을 포함하여야 합니다.
  • 즉, 복합 속성, 다중 속성, 중첩 릴레이션 등의 비원자적인 속성을 허용하지 않습니다.

제2정규형

  • 제1정규형을 만족하며, 기본키에 속하지 않은 속성 모두가 기본키에 완전 함수 종속을 만족해야합니다.
  • 즉, 부분 함수적 종속성을 제거한 상태를 발합니다.

제3정규형

  • 제2정규형까지 만족하며, 어떠한 비주요 속성들이 기본키에 대해서 이행적 함수 종속이 제거된 상태를 말합니다.
  • 하나의 릴레이션에서 X→Y이고 Y→Z가 만족하는 경우 X→Z의 이행적 함수 종속이 발생하므로, X→Y와 Y→Z를 각 테이블로 분리하는 과정을 말합니다.

BCNF(BOYCE-CODD) 정규형

  • 제3정규형까지 만족하며, 결정자이면서 동시에 후보키가 아닌것을 제거한 상태를 말합니다.
  • 즉, 모든 결정자는 항상 후보키가 되도록 릴레이션을 분해해야 합니다.

참조 사이트