0

필자는 행에 여러 날짜 필드를 저장하는 팩트 테이블을 보유하고 있습니다. 나는 디자인을 유연하게 유지하고 모든 필드를 시간 차원과 연결하고 싶습니다. 그러나 문제는 내 보고서가 쿼리에 너무 많은 조인 (각 날짜 필드에 하나씩)이 있다는 것입니다. 이 문제를 어떻게 완화합니까?데이터웨어 하우스의 시간 차원

시간 차원 참조 (빠른 검색)와 날짜 필드 (효율적인 검색)를 모두 저장하는 아이디어가 있습니다. 그렇게 할 때 발생할 수있는 문제점은 무엇입니까?

이 아이디어를 일반화하면 사실 테이블의 다른 필드에도 적용해야합니까? 모든 캡처 보고서를 작성하는 동안

테이블 구조

acc_num | acc_approved_date| acc_rejected_date| file_gen_date 

제안 된 변경

acc_num | acc_approved_date_id| acc_rejected_date_id| file_gen_date_id 

그러나이 너무 많은 데의 문제를 야기 날짜 차원에 연결하는 동안 날짜 차원 테이블에 조인 이 날짜들 중 나는이 두 필드의 날짜와 ID를 둘 다 저장하는 두 가지 하이브리드를 제안합니다.

+0

사실 테이블 행을 거의 공유하지 않겠습니까? 문제를 시각화하는 것이 좋습니다. 따라서 문제는 무엇입니까? 많은 조인 - 성능 또는 관리? 평면 테이블 디자인을 제안 하시겠습니까? – fenix

+0

@fenix 귀하의 의견에 따라 질문을 업데이트했습니다. 필자가 10 개의 필드를 작성 했으므로 보고서를 만드는 것은 어려움이 될 것입니다. 성능 문제로 이어질 지 여부가 명확하지 않습니다. 감사. – Bazooka

+0

데이터의 볼륨을 알 수 없으므로 원하는 성능을 알지 못하므로 머리에 현재 모델을 사용합니다. 정크 차원 (dim_id, dim_att1, dim_att2 ... dim_attN)을 항상 만들거나 조인을 사용하지 않고 직접 팩트 테이블을 쿼리하여 속도를 테스트 해보는 것이 좋습니다. 그러나 필자가 보았 듯이 mySQL은 데이터웨어 하우징을위한 최선의 선택이 아니지만 문제는 무엇인지 확실하지 않습니다. 성능이나 다른 뭔가? – fenix

답변

0

날짜에 대한 정보 (예 : 월 및 연도 이름)를 찾으려는 경우 또는 날짜를 필터링하려는 경우에만 날짜 차원 테이블에 조인 할 수 있습니다. 여러 날짜 키로 작업하는 것이 올바른 방법입니다. 쿼리 결과로 필터링하거나 포함하려는 모든 차원에 대해 조인이 필요합니다.

관련 문제