[반정규화] 테이블 분할의 단점 (Feat. 정규화vs반정규화)

2020. 8. 3. 11:36컴퓨터언어/Database

728x90
반응형

 

 

👍 테이블 분할이란?

 

정규화 != 테이블분할(반정규화의 방법 중 하나)

 

데이터의 무결성을 확보하기 위해서는 정규화를 실시하는 것이 일반적이지만, 오히려 정규화 때문에 쪼개진 테이블이 서로 연산하기 위해 트랜잭션이 증가하여 비용이 높게 청구된다면, 무결성을 포기하는 대신 반정규화를 실시하게 된다.

 

그런데 여기서 혼동의 우려가 있는데, 정규화도 테이블을 쪼개는 과정이지만, 반정규화에도 "테이블 분할"이라는 방식이 존재한다는 것이다.

그래서 차이점을 정확히 알아야 한다.

 

"정규화"로서의 테이블 쪼개기와 "반정규화의 테이블 분할"로서의 테이블 쪼개기는 각각 유형이 따로 정해져 있다.

 

정규화로서의 테이블 쪼개기는 테이블이 원자성을 보유하거나, 부분함수종속성/이행함수종속성을 탈피하도록 각각의 단계에 맞추어 테이블을 쪼개는 반면,

2020/06/16 - [컴퓨터언어/Database] - [정규화] 효율적인 데이터베이스 스키마 구축

2020/06/17 - [컴퓨터언어/Database] - [정규화] 효율적인 데이터베이스 스키마 구축 2

 

반정규화로서의 테이블 분할로서의 테이블 쪼개기는 특정 레코드(가로)의 데이터 양이나 속성(세로)의 사용 빈도에 따라 테이블을 쪼개는 것이다.

2020/06/17 - [컴퓨터언어/Database] - [반정규화] 논리적 설계에서의 정규화가 오히려 독일 때

 

하지만 테이블 분할 시에는 다음과 같은 단점이 있다.

  • 속성(세로, column)별 "사용빈도"에 따라 테이블을 쪼개다 보니, 기본키가 있는 테이블과 기본키가 없는 테이블로 나누어질 수 있으므로 기본키의 유일성 관리가 어렵다.
  • 분할된 테이블들을 전체 조회할 경우 UNION을 사용해야 하므로, 수행속도가 느려질 수 있다.

 

따라서 데이터 양이 적거나 사용빈도가 낮은 경우에는 테이블 분할이 정말 필요한지 고려해야 하며, 데이터 검색에 중점을 두어 테이블 분할 여부를 결정해야 한다.

728x90
반응형