반정규화(2)
-
[반정규화] 테이블 분할의 단점 (Feat. 정규화vs반정규화)
👍 테이블 분할이란? 정규화 != 테이블분할(반정규화의 방법 중 하나) 데이터의 무결성을 확보하기 위해서는 정규화를 실시하는 것이 일반적이지만, 오히려 정규화 때문에 쪼개진 테이블이 서로 연산하기 위해 트랜잭션이 증가하여 비용이 높게 청구된다면, 무결성을 포기하는 대신 반정규화를 실시하게 된다. 그런데 여기서 혼동의 우려가 있는데, 정규화도 테이블을 쪼개는 과정이지만, 반정규화에도 "테이블 분할"이라는 방식이 존재한다는 것이다. 그래서 차이점을 정확히 알아야 한다. "정규화"로서의 테이블 쪼개기와 "반정규화의 테이블 분할"로서의 테이블 쪼개기는 각각 유형이 따로 정해져 있다. 정규화로서의 테이블 쪼개기는 테이블이 원자성을 보유하거나, 부분함수종속성/이행함수종속성을 탈피하도록 각각의 단계에 맞추어 테이블을..
2020.08.03 -
[반정규화] 논리적 설계에서의 정규화가 오히려 독일 때
현실 속의 추상적 개념을 이해하기 쉽게 도식화한 것이 ER 다이어그램이고, ER 다이어그램의 환상에 효율성을 끼얹은 것이 정규화였다. 2020/06/16 - [컴퓨터언어/Database] - [정규화] 효율적인 데이터베이스 스키마 구축 그런데 간혹 정규화가 오히려 성능을 방해하는 경우가 있다. 정규화란 결국 테이블을 여러 개로 쪼개는 것인데, 실제 데이터베이스를 구현해서 사용할 때 조인 연산이 엄청 무겁다면 무결성을 얻는 대신 성능은 바닥을 기고 통장텅장은 텅텅 비게 될 것이다. 그래서 이런 현상에 미리 대비하고자, 논리적 설계 이후의 물리적 설계 단계에서는 DB에 대한 쿼리 빈도와 그에 따른 트랜잭션(연산)을 예측하고 분석하여, 정규화가 오히려 독이 될 경우에는 반정규화를 하도록 제시한다. 👍 상관모델..
2020.06.17