2013-02-24 4 views
1

나는 Dimensions, FactPlaces, DimPeaces, DimPeaces와 관련된웨어 하우스 테이블을 설계했습니다. 보시면 간단합니다. 모든 위치는 DimPlaces (Addrline1, Addrline2, placename 등)에 있고 지리 계층 구조는 DimGeography (도시, 주, 국가, PostCode)에 있습니다. FactPlaces는 DimPlaces 및 DimGeography에 foriegn 키가있는 테이블입니다.SSAS - 차원 및 팩트 테이블 히스토리 데이터 - 차원 테이블로 팩트 테이블 매핑

장소 이름이나 속성이 변경 될 수 있고 장소의 위치가 변경된 후 지리적 계층 구조 키가 변경 될 가능성이 있으므로 이력 데이터를 유지하고 싶습니다.

내가 찾은 디자인 패턴 -

또 다른 유용한 디자인 패턴은 차원의 대용 키에 추가하여 사실 테이블에 내구성 계정 키를 추가하는 것입니다. 이는 차원의 현재 행에 다시 조인되어 현재의 차원 특성별로 모든 기록을보다 쉽게보고 할 수있게합니다.

이 솔루션을 따르는 것이 좋습니다. 그렇다면 UNIQUEIDTITIER 유형의 KEY를 고유 한 값으로 사용해야합니까?

또 다른 질문 - 직원 데이터 (DimEmployee 및 FactEmployee)가 있습니다. 각 직원은 그가 일하는 곳과 관련이 있습니다. 이 직원들과 장소 테이블을 연결하는 방법. FACTEMPLOYEE와 FACTPLACES를 연결해야합니까?

답변

0

처음에는 비즈니스 키를 언급하는 것 같습니까? 따라서 차원 테이블에 두 개의 행, 대리 키 1 & 2가 있지만 둘 다 동일한 것을 참조하므로 AccountId/ProductId/WhateverId가 1이면 사로 게이트 키 1과 비즈니스 키가있는 팩트 테이블 행을 갖게됩니다 1 및 그 이후의 키는 대리 키 2 및 비즈니스 키 1을 사용합니다.

고유 식별자는 매우 넓으므로 가능한 경우 사실 테이블과 조인에 사용하지 마십시오.

마지막 질문은 - 실제로 더 많이보고하는 것입니다. 그렇게해야합니까? 그것은 사람들이 볼 필요가있는 것입니까, 그것들에 의해 조각을 내야합니까? 참조 된 차원 - 직원 테이블의 placesId를 통해 작업 영역 테이블이 사실 테이블에 연결되는 위치를 고려할 수 있습니다. 또는 시작 날짜와 종료 날짜가있는 factemployees 테이블을 가질 수 있습니다. 그것은 당신이 성취해야 할 것에 달려 있습니다.

+0

감사합니다. uniqueidentifier가 매우 넓다는 것에 동의합니다. 신원 열 이외의 businesskey 열에서 고유 ID를 얻는 다른 방법은 무엇입니까? 나는 그것에 고심하고있다. –

+0

@ChrisChris, 차원에 대리 키가 있습니다. 이것은 차원 테이블의 ID입니다. 비즈니스 키는 원본 테이블의 ID이므로 테이블이 DimProduct 인 경우 비즈니스 키는 원본 데이터베이스에서 Product 테이블의 Identity 열일 가능성이 큽니다. 차원 테이블 원본에 기본 키가 없습니까? – Meff