자격증/정보처리기사

88~89. 정규화, 반정규화(A)

환성 2023. 2. 3. 22:29
728x90

정규화

  • 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만듬
  • 정규화 수준이 높을수록 연한 데이터 구축, 데이터 정확성이 높아짐, 하지만 많은 조인으로 조회 성능이 저하
  • 안정성 및 무결성 유지
  • 이상의 발생 방지 및 자료 저장 공간의 최소화
  • 데이터 중복성 감소

 

이상의 개념 및 종류

  • 삽입 이상 : 데이터 삽입 시 의도와 상관없이 원하지 않는 값이 들어갈 떄
  • 삭제 이상 : 릴레이션에서 한 튜플을 삭제할 때 의도와 상관없이 값이 함께 삭제
  • 갱신 이상 : 속성값 갱신 시 일부 튜플 정보만 갱신될 때 

 

정규화 과정

  • 1NF(제1정규형) : 모든 도메인이 원자값만으로 되어 있음
  • 2NF(제2정규형) : 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수 종속
  • 3NF(제3정규형) : 이행적 종속 만족 X
  • BCNF(Boyce-Codd 정규형) : 결정자가 모두 후보키인 정규형
  • 4NF(제4정규형) : 다치 종속이 성립할 떄 함수적 종속 관계
  • 5NF(제5정규형) : 모든 조인 종속이 후보키를 통해서만 성립되는 정규형
  • 도부이결다조

 

반정규화

  • 정규화된 데이터 모델을 통합, 중복, 분리하는 과정, 의도적으로 정규화 원칙 위배
  • 시스템 성능 향상, 관리 효율성 증가, 데이터의 일관성, 정합성 저하 
  • 방법 : 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가

 

테이블 통합

  • 두 개의 테이블을 하나로 합쳐 사용하여 성능 향상, 두 개의 테이블을 조회할때 자주 사용
  • 1:1 관계 테이블 통합, 1:N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합
  • 입력, 수정, 삭제가 어려움, 처리량 증가, 제약조건 설계 어려움

 

테이블 분할

  • 수직 또는 수평으로 분할
  • 수평 분할 : 레코드 기준으로 분할, 사용 빈도에 따라 테이블 분할
  • 수직 분할 : 속성 기준으로 테이블 분할
  • 수행 속도가 느려질 수 있음, 데이터 검색에 중점을 두어 테이블 분할 여부를 결정

 

중복 테이블 추가

  • 여러 테이블에서 데이터를 추출할 때, 다른 서버에 저장된 테이블 이용해야 할 때 사용
  • 추가하는 경우 : 수행 속도 느릴 때, 많은 범위, 특정범위 데이터를 자주 처리할 떄
  • 방법 : 집계 테이블 추가, 진행 테이블 추가, 특정 부분만 포함하는 테이블 추가

 

중복 속성 추가

  • 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성 추가
  • 추가하는 경우 : 조인 자주 발생, 접근 경로가 복잡할 때