2016-06-30 5 views
1

고객의 데이터베이스 중 하나에는 여러 다른 테이블의 유용한 정보를 요약하는 몇 가지 스냅 샷 테이블이 있습니다 (예 : 각 기간의 각 고객의 상태 등) .외부 키가있는 스냅 샷 테이블과 실제 값이있는 스냅 샷 테이블

그러나 스냅 숏 테이블은 대부분 원래 테이블에 외래 키를 포함합니다. 따라서 스냅 샷에 대한 유용한 정보를 얻으려면 해당 테이블에 여러 번 가입시켜야합니다. 그리고 이러한 조인은 종종 매우 오래 걸립니다. 반면에 데이터베이스에있는 모든 FL 열 (또는 최소한 쿼리의 WHERE 절에있는 열)에 인덱스를 추가하면 데이터베이스가 크게 느려집니다.

내 질문은 외래 키 대신 실제 값으로 스냅 샷 테이블을 갖는 것이 더 좋지 않겠는가? 그리고 대답이 부정적인 경우 원래 테이블이 업데이트되면 스냅 샷 테이블의 목적을 상회하지 않을 것입니다 (예 : '캔들'이라고 불리며 '램프'는 물론 스냅 샷이 일관성을 유지하지만 실제로이 스냅 샷입니다. 경우?)

+1

스스로 질문하십시오 : 일부 항목이 삭제되면 어떻게됩니까? FK가 포함 된 스냅 샷은 더 이상 – lokusking

+0

@lokusking이 아니게됩니다. 그렇다면 진정한 가치관을 갖는 것이 합리적이지 않습니까? – Disasterkid

+1

이것은 의미가있는 유일한 것입니다. – lokusking

답변

1

내가 언급 한 이유로 FK 값보다는 실제 데이터를 저장하는 경향이 있습니다. 즉, 더 나은 솔루션은이 과거 데이터를 관련 특성 (IE Dimensions)과 함께 재배치하고 분석을 위해 재구성하는 것입니다. Data warehousing은 매우 큰 규모의 프로젝트가 될 수 있지만 확실하게이를위한 솔루션이므로 가치를 이해하고 적절하게 범위를 지정해야합니다. 그러나 캡처하려는 특정 이벤트를 대상으로하는 경량 스타 스키마조차도 트랜잭션 기반 테이블과의 관계가있는 대형 과거 테이블 (특히 관련 테이블에 대한 쿼리 논리가 복잡한 경우)보다 나은 솔루션이 될 수 있습니다. .