관계형 데이터 모델링 프리미엄 가이드 DB구축 (2014년)
정규화 0 0 55,149

by 구루비스터디 정규화 비정규화 [2018.06.10]


1. 정규화란(Normalization)?

  • 정규화는 속성 간의 부정확한 종속성을 없애는 것을 의미함.
  • 함수 종속 개념을 기반으로 유사한 속성들은 모으고 종속성이 없는 독립적인 속성들은 분리하는 것.
  • 관계형 데이터 모델은, 속성의 종속성과 의존성을 분석해 더는 분해될 수 없는 엔터티로 만드는 정규화 과정 거쳐야 함.
  • 비정규화는 반드시 정규형을 거쳐야 진행 가능함.


2. 아노말리 현상

  • 정규형은 아노말리 현상을 최소화 함.
  • 아노말리는 데이터 이상 현상으로 업데이트, 삭제, 삽입 아노말리 등이 존재함.
  • 데이터 중복은 아노말리를 발생시키고, 중복이 없는 정규형은 아노말리를 최소화 함.


3. 모델 구조

  • 관계형 데이터베이스는 모델이 잘 구현되어 있을 경우, 데이터를 가장 효율적으로 저장하고 추출해 사용할 수 있음.
  • 반대로 구조가 잘 못 되었을 경우, 성능과 무셜성 그리고 유지보수 측면에서 심각한 문제가 발생함.


4. 정규화 vs 비정규화


정규화
  • 실제 업무를 가장 잘 반영할 수 있음.
  • 간결하게 구성되어 더욱 직관적으로 이해할 수 있음.
  • 확장성이 용이함.


비정규화
  • 특정 어플리케이션 성능을 위해 비정규화를 채택하기도 함.


5. 중복 속성(상품명)이 사용된 모델



  • 상품엔터티에 상품명 속성이 존재함에도 불구하고, 장바구니, 관심상품, 주문상품 엔터티에 상품명 속성이 존재하여 중복으로 관리함.
  • 이 모델은 상품 엔터티아 조인을 피하려고 상품명을 중복 속성으로 채택함.
  • 하지만, 이 모델에서 상품코드가 '101011'인 상품의 이름이 변경되면, 상품 엔터티 이외에 상품명이 들어간 모든 엔터티의 속성값을 수정해야 함.
  • 이로 인해 업데이트 비효율이 발생하고, 이보다 복잡할 경우 데이터 정합성이 깨질 수 있음.
"구루비 데이터베이스 스터디모임" 에서 2014년에 "관계형 데이터 모델링 프리미엄 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3593

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입