티스토리 뷰

데이터

정규화

잔잔한 물결처럼 2025. 3. 3. 01:18

정규화는 데이터의 정확성과 일관성을 유지하기 위해 엔티티를 작은 단위로 분리하는 과정이다.

정규화를 하면 데이터 조회성능은 향상되는 경우도 있고 저하되는 경우도 있다. 그러나 정규화를 하면 입력, 수정, 삭제 성능은 일반적으로 향상된다.

 

정규화
제 1 정규형 모든 속성은 반드시 하나의 값을 가져야 한다
제 2 정규형 엔티티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다
제 3 정규형 주 식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.

 

반정규화

데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다. 

조회성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될수 있다.

순서상 정규화가 끝난 후 반정규화를 한다

테이블 반정규화    
테이블 병합 1:1 관계 테이블 병합 JOIN 이 필요한 경우가 많아서 테이블을 통합하는 것이 성능 측면에서 유리할 경우 실시한다.
1:M 관계 테이블 병합
슈퍼 서브 타입 테이블 병합
테이블 분할 테이블 수직 분할 엔티티의 일부 속성을 별도의 엔티티로 분할하는것이다.
테이블 수평 분할 엔티티의 인스턴스를 특정 기준으로 별도의 엔티티로 분할(파티셔닝)한다
테이블 추가 중복 테이블 추가 테이블의 중복이 발생하더라도 성능상의 이점이 큰 경우 고려한다.
통계 테이블 추가 테이블에 관련 통계치를 미리 계산하여 저장하는 방식이다.
이력 테이블 추가 과거의 데이터를 따로 관리하려고 할때 사용하는 방식
부분 테이블 추가 특정 데이터만 필요한 경우가 많은 경우 사용

 

 

컬럼 반정규화
중복 컬럼 추가 JOIN 이 많이 필요한 경우 컬럼을 추가하는것이 성능 측면에서 유리할때 사용한다.
파생 컬럼 추가 프로세스 수생시 부하가 염려되는 계산값을 미리 컬럼으로 추가하여 보관하는 방식
이력 테이블 컬럼 추가 최신 데이터 여부등 이력을 미리 추가해 놓는 방식

 

관계 반정규화(중복 관계 추가)

업무 프로세스상 JOIN 이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려

'데이터' 카테고리의 다른 글

SQL 기본 함수 설명2  (0) 2025.03.04
SQL 기본 함수 설명1  (0) 2025.03.03
트랜잭션과 NULL  (0) 2025.03.03
데이터 모델링  (0) 2025.03.02
데이터와 정보, 데이터베이스에 대한 기본적인 정리  (0) 2025.02.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함