Certificate/정보처리기사

[3과목 데이터베이스 구축] 논리 데이터베이스 설계 - 089. ⭐ 반정규화(Denormalization)

S_sun 2024. 12. 5. 16:03
  • 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정
  • 의도적으로 정규화 원칙을 위배하는 행위
  • 시스템 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하
  • 과도한 반정규화는 오히려 성능을 저하
  • 사전에 데이터의 일관성과 무결성을 우선으로 할지, 데이터베이스의 성능과 단순화를 우선으로 할지 결정해야 함
  • 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가

1. 테이블 통합

  • 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능향상에 도움이 될 경우 수행
  • 1:1관계 테이블 통합, 1:N관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합
  • 테이블 통합 시 고려 사항
    • 데이터 검색은 간편하지만 레코드 증가로 인해 처리량 증가
    • 입력, 수정, 삭제 규칙이 복잡해질 수 있음
    • Not Null, Default, Check 등 제약조건을 설계하기 어려움
      • Not Null : 속성 값이 Null이 될 수 없음
      • Default : 속성 값이 생략되면 기본값 설정
      • Check : 속성 값의 범위나 조건을 설정해 설정한 값만 허용

2. 테이블 분할

  • 수평 분할(Horizontal Partitioning)
    • 레코드를 기준으로 테이블을 분할
    • 레코드별로 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할
  • 수직 분할(Vertical Partitioning)
    • 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 데이블을 분할
    • 갱신 위주의 속성 분할 : 데이터 갱신 시 레코드 잠금으로 인해 다른 작업을 수행할 수 없으므로 갱신이 자주 일어나는 속성들을 수직 분할
    • 자주 조회되는 속성 분할 : 테이블에서 자주 조회되는 속성이 극히 일부일 경우 자주 사용되는 속성들을 수직 분할
    • 크기가 큰 속성 분할 : 이미지나 2GB 이상 저장될 수 있는 텍스트 형식 등으로 된 속성들을 수직 분할
    • 보안을 적용해야 하는 속성 분할 : 테이블 내의 특정 속성에 대해 보안을 적용할 수 없으므로 보안을 적용해야 하는 속성들을 수직 분할
  • 테이블 분할 시 고려사항
    • 기본키의 유일성 관리가 어려움
    • 데이터 양이 적거나 사용 빈도가 낮은 경우 테이블 분할이 필요한지 고려해야 함
    • 수행속도가 느려질 수 있음
    • 데이터 검색에 중점을 두터 테이블 분할 여부를 결정

3. ⭐ 중복 테이블 추가

  • 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가하여 작업의 효율성 향상
  • 중복 테이블 추가하는 경우
    • 정규화로 인해 수행 속도가 느려지는 경우
    • 많은 범위의 데이터를 자주 처리해야 하는 경우
    • 특정 범위의 데이터만 자주 처리해야 하는 경우
    • 처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우
  • 집계 테이블의 추가
    • 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
    • 트리거의 오버헤드에 유의
  • 진행 테이블의 추가
    • 이력관리 등 목적으로 추가하는 테이블
    • 적절한 데이터 양의 유지와 활용도를 높이기 위해 기본키를 적절히 설정
  • 특정 부분만 포함하는 테이블 추가
    • 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성

4. 중복 속성 추가

  • 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
  • 무결성 확보 어렵고, 디스크 공간이 추가로 필요함
  • 중복 속성을 추가하는 경우
    • 조인이 자주 발생하는 속성인 경우
    • 접근 경로가 복잡한 속성인 경우
    • 엑세스의 조건으로 자주 사용되는 속성인 경우
    • 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우
  • 중복 속성 추가 시 고려 사항
    • 테이블 중복과 속성의 중복을 고려
    • 데이터 일관성 및 무결성에 유의
    • SQL 그룹 함수를 이용해 처리할 수 있어야 함
    • 제장 공간의 지나친 낭비를 고려

 

📖 Reference
 

2023 시나공 정보처리기사 필기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

728x90
반응형