Database

테이블 설계 - 정규화

BUST 2018. 8. 12. 18:12

데이터베이스 설계 - 정규화


제 1정규화

  • 하나의 row에서 하나의 값(원자값 atomic value)만 저장해야 된다.
  • 반복되는 데이터를 가로(열 방향)가 아닌 세로(행 방향)로 늘리는 것이 제 1정규화의 제1단계이다
  • 정규화 이전
    • 상품 번호, 색상
    • 1번 상품, 검은색, 빨간색
    • 2번 사품, 검은색, 노랑색
  • 정규화 이후
    • 1:N 구조의 테이블의 생성이 된다
    • 상품 테이블
      • 1번
      • 2번
    • 상품 컬러 테이블
      • 1번, 검은색
      • 1번, 빨강색
      • 2번, 검은색
      • 2번, 노랑색

제 2정규화

  • 제2정규화에서는 데이터 중복하는 부분을 찾아내서 테이블로 분리 한다.
  • 세로 행방향의 반복되서 중복되는 데이터를 테이블로 분리를 한다.
  • 각각의 속성은 PK에 종속이 되어야 있어야 된다.
  • ex)
    • product_names
    • PK : productId.. or productNameId
    • 이 테이블에 해당하는 되는 속성의 값은 name와 관련된 속성이 있어야 된다.

제 3 정규화

  • 기본키 이외의 부분에서 중복이 없는지를 조사를 한다.
  • 기본키에 해당되지 않는 attribute를 테이블로 분리를 한다.
  • ex)
    • 세금이 변경이 될때 상품이 가격이과 세금 컬럼이 변경이 된다면 2개의 컬럼을 서로 의존적인것이다.
    • 제 3정규화를 만족을 하면 세금이 변경이 되더라도 상품이 가격이 변하지 않아야 된다.
    • 각각의 컬럼은 독립적이이여야 된다.

정규화의 목적 

  • 정규화로 데이터로 구조를 개선하는 것은 하나의 데이터가 한곳에 저장되도록 하기 위함이다.