관계형 데이터 모델링 프리미엄 가이드 DB구축 (2017년)
정규화의 목적 0 0 662

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


정규화의 목적은 안정성과 확장성

  • 정규화를 하는 가장 근본적인 이유는 중복 데이터(속성,엔터티)를 제거하기 위함 \-> 아노말리 제거
  • 정규화가 중복을 완전히 제거하는 것은 불가능하지만 최소화할 수 있음
  • 데이터의 정체성이 그대로 반영된 모델 구조에서는 업무가 수정되거나 추가되어도 엔터티에 반영하기 수월해짐
  • 데이터 무결성을 높임
  • 저장 공간을 최소화할 수 있음 \-> 성능향상에 도움

정규화 테이블

모델1 : 고객 (고객번호, 고객명, 집전화번호, 핸드폰번호) 로 구성된 비정규화된 모델

모델2 : 고객 (고객번호, 고객명), 고객전화번호 (고객번호, 번호종류, 번호) 로 구성된 정규화 모델

이 경우 사업장전화번호를 추가하여야 할 경우 모델1의 경우, 컬럼을 추가하여야 함, 컬럼이 추가되면 테이블 사이즈는 증가함

반면 모델2의 경우 컬럼을 추가할 필요가 없음

(모델2의 경우 테이블 사이즈가 증가할 가능성은 적지만 조인 횟수가 증가하므로 테이블 사이즈 증가량과 조인횟수의 증가량이

성능에 어느정도 영향을 미칠지에 대한 검토가 필요함)

쿼리 작성 방법에 따라 모델1의 경우 쿼리 변경이 필수적이지만 모델2의 경우에는 쿼리 변경이 필요하지 않을 수도 있음

select a.고객번호
     , a.고객명
     , (select listagg(b.번호,',') within group(order by b.번호종류)
          from 고객전화번호 b
         where b.고객번호 = a.고객번호) 고객전화번호
  from 고객 a

"주주클럽 스터디모임" 에서 2017년에 "관계형 데이터 모델링 프리미엄 가이드" 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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