데이터베이스 설계 - 정규화
제 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정규화를 만족을 하면 세금이 변경이 되더라도 상품이 가격이 변하지 않아야 된다.
- 각각의 컬럼은 독립적이이여야 된다.
정규화의 목적
- 정규화로 데이터로 구조를 개선하는 것은 하나의 데이터가 한곳에 저장되도록 하기 위함이다.
'Database' 카테고리의 다른 글
Redis 자료구조 (0) | 2018.10.14 |
---|---|
목적에 맞는 데이터베이스 선택하기 (0) | 2018.09.09 |
역색인 (Inverted Index) (0) | 2018.08.27 |
NoSQL DB의 1:N 데이터의 구조의 설계 방법의 종류 (0) | 2018.05.22 |