without haste but without rest

[DB] 정규화(Normalization) 본문

Database

[DB] 정규화(Normalization)

JinungKim 2020. 2. 6. 21:19
출처:http://www.dbguide.net/db.db?cmd=view&boardUid=148184&boardConfigUid=9&categoryUid=216&boardIdx=133&boardStep=1

1. 정규화 

-> 중복 제거

출처: http://www.dbguide.net/db.db?cmd=view&boardUid=148184&boardConfigUid=9&categoryUid=216&boardIdx=133&boardStep=1

 

위 이미지에서 장기재고라는 항목이 1, 2, 3 개월로 나누어져 있고 또 해당 개월 별로 수량, 주문수량 등이 별도로 존재한다. 

 

 

만약 피쳐가 재고 수량 개월 수 대로 존재한다고 생각하면 아찔하다..

 

▲ 이게 정규화된 테이블의 속성이다. 보통 이런식으로 테이블에 속성값을 부여한다.

 

 

▲ 위에서 정규화가 안 된 테이블은 속성값을 이런식으로 입력해둔 거다. 극단적이긴 하다.

 

 

 

 

정규화는 중복되는 속성들을 공통 분모로 묶어서 중복을 제거하거나, 자주 쓰지 않는 속성들을 분리하고 관계로 연결하는 것이 특징이다. 예를 들어서 재고 품목을 개월 별로 전부 분리하면 12개의 속성이 필요하다. 그런데 재고기간과 품목 두가지로 나누면 2개의 속성으로 충분하다.

 

 

+

반정규화는 역으로 중복 속성을 생성해서 테이블 조회 속도를 상승 시키는 방법이다. 디비 구조에 따라서 정규화와 반정규화를 적절하게 적용시켜야 한다.

 

 

'Database' 카테고리의 다른 글

[DB] DDL  (0) 2020.02.06
[DB] 자꾸 까먹는 SQL 명령어 종류  (0) 2020.02.06
[DB] 식별자(Identifiers)  (0) 2020.02.06
[DB] 관계(Relationship)  (0) 2020.02.06
[DB] 속성(Attribute)  (0) 2020.02.06
Comments