정규화 및 비정규화

1. 정규화

데이터 무결성(데이터의 정확성과 일관성 유지 및 보증)을 위해 엔터티를 작은 단위로 분리하는 과정입니다.

1) 제1정규형 – 모든 속성은 하나의 값만 가져야 합니다.

2) 제2정규형 – 개체의 모든 일반 속성은 모든 주식에 종속되어야 합니다.

3) 제3정규형 – 특정 주식이 아닌 모든 속성은 서로 종속될 수 없습니다.

생각!

정규화를 공부하면서 제2정규형과 제3정규형을 헷갈렸어요. 약간의 차이가 있었습니다.

제2정규형이 만족되면 일반 속성은 종별 특성에 종속되어야 합니다.

하지만!
모두 주식형에 종속되더라도 일반적인 속성은 서로 종속될 수 있습니다.

이것이 우리가 제3정규형이 필요한 이유입니다!

정규화의 경우 처리 조건에 따라 데이터 검색 성능이 향상되거나 저하될 수 있지만 일반적으로 입력, 수정 및 삭제 성능이 향상됩니다.

2. 비정규화

비정규화 과정은 정규화가 끝난 후 거치는 과정이다.

데이터 중복을 허용하거나 데이터를 그룹화하여 데이터 검색 성능을 향상시키는 프로세스입니다.

1) 테이블 비정규화

(1) 테이블 병합 – 비즈니스 프로세스에서 JOIN이 필요한 경우가 많기 때문에 테이블 병합이 성능면에서 유리한 경우를 고려하십시오.

(2) 테이블 파티셔닝

★Table Vertical Split: 엔티티의 일부 속성을 별도의 엔티티로 분할(1:1 관계 설정)

★Table Horizontal Partition: 엔티티의 인스턴스를 특정 기준에 따라 별도의 엔티티로 분할(파티션)

(3) 테이블 추가

★중복 테이블 추가: 데이터 중복을 고려하더라도 성능상 절대적으로 필요하다고 판단되는 경우 별도의 엔터티를 추가합니다.

★통계표 추가

★히스토리 테이블 추가

하위 표 추가

2) 열 준정규화

(1) 중복 컬럼 추가 – 비즈니스 프로세스상 JOIN이 필요한 경우가 많으므로 컬럼 추가가 성능상 유리한 경우 고려.

(2) 파생 컬럼 추가 – 프로세스 수행 시 부하가 우려되는 계산값을 미리 컬럼으로 추가하여 저장하는 방식여기에는 제품 재고 또는 판촉 할인 가격이 포함될 수 있습니다.

(3) 히스토리 테이블에 컬럼 추가하기 – 히스토리 테이블의 양이 많을 때 검색 속도가 느려지는 것에 대비하여 검색 기준으로 판단한 컬럼을 미리 추가하는 방법이다.

최신 데이터 등이 해당될 수 있습니다.

3) 관계 비정규화(중복 관계 추가)

비즈니스 프로세스에서 JOIN이 필요한 경우가 많기 때문에 중복 관계를 추가하는 것이 성능 측면에서 유리할 때 고려