티스토리 뷰
반정규화
: 정규화로 데이터 조회 비용이 늘어남, SELECT 속도 향상을 위해 중복을 허용하여 DB 구조 재조정
반정규화 방법
테이블 병합
두 테이블이 조인되어 사용하는 경우가 많으면, 성능 향상을 위해 하나의 테이블로 병합하여 사용
고려사항
조회가 간편하지만 레코드(row) 증가로 데이터 처리량 증가
입력, 수정, 삭제 규칙이 복잡해질 수 있음
NOT NULL, DEFAULT, CHECK 등 constraint 설계가 어려움
테이블 분할
수직 분할
테이블에 속성이 너무 많을 경우, 칼럼을 분할하여 새로운 테이블을 만드는 것
UPDATE/SELECT 자주 되는 속성 / 크기가 큰 속성 / 보안 적용이 필요한 특정 속성을 분할
수평 분할
레코드별 사용 빈도에 따라 레코드를 기준으로 테이블 분할
고려사항
수행 속도가 느려질 수 있음, 검색에 중점을 두어 분할 여부 결정
기본키의 유일성 관리가 어려움
데이터 양이 적거나 사용 빈도가 낮은 경우 분할이 필요한지 고려
중복 테이블 추가
작업의 효율성을 위해 중복 테이블을 추가함
- 집계 테이블 추가: 원본 테이블에 트리거를 설정하여 사용
- 진행 테이블 추가: 이력 관리 목적
- 특정 부분만 포함하는 테이블
중복 속성 추가
조인해서 데이터를 처리시 조회하는 것을 단축시키기 위해 속성을 추가함
조인을 자주하는 속성 / 접근 경로가 복잡한 속성 / 액세스 조건으로 사용되는 속성
고려사항
테이블 중복, 칼럼의 중복 고려
데이터 일관성, 무결성에 유의
SQL Group 함수를 이용하여 처리할 수 있어야 함
저장 공간의 지나친 낭비 고려
'Computer Science > Database' 카테고리의 다른 글
[Database] 트랜잭션(Transaction) / ACID (0) | 2022.08.31 |
---|---|
[Database] 뷰(View) 개념 및 장단점 (0) | 2022.08.30 |
[Database] 정규화(Normalization) 개념 및 예시 (0) | 2022.08.28 |
[Database] 함수적 종속 (Functional Dependency) (0) | 2022.08.28 |
[Database] 데이터베이스 이상현상 (Anomaly) (0) | 2022.08.27 |
댓글