2017-10-19 1 views
0

지난 며칠간 데이터웨어 하우스를 연구했습니다. 특히 Kimball and Ross가에 대해 데이터웨어 하우스 툴킷 - 차원 모델링에 대한 확실한 안내서를 읽었습니다.제품 팩토리를 판매 사실과 관련시키는 방법

enter image description here

을 내가 할 수있는 생각 : 독서 Uppon

, 난 당신이 우는 소리 이미지에서 볼 수 있듯이, 판매 사실과는 제품 차원에 관련된이 1 exapmle에 온 이 관계로 우리가 어떻게 "큐브"슬라이싱 및 다이 싱 데이터를 회전시킬 수 있는지에 대한 요지를 파악할 수 있습니다. 그러나 이것이 내가 잃어버린 곳입니다 :

이 예제와 웹 제품의 많은 다른 것들은 일대일 관계입니다 판매로, 나는 대부분의 경우에 맞을 것이다. 그러나 이것은 적어도 한 종류의 제품에 대한 판매 등록을 생성합니다.

내가 바나나 1 개, 사과 2 개, 오렌지 1 개를 구입했다면 적어도 3 개의 판매 레지스트리가 생길 것입니다. 다시 말하지만, 그것은 판매 사실에 판매 티켓 번호를 저장하는 것으로 추측됩니다. 주어진 판매에서 모든 itens를 여전히 관련시킬 수 있습니다.

그러나 유스 케이스 인 경우 : 판매 관련 제품은 바나나가있는 모든 판매를 얻고 다음과 같은 물건을 얻고 싶다고 말합니다. 판매의 품목 수, 가격 비용, 이익, 물건 등 그 ... 사실 제품 관계가 사실 - 일대일 - 제품 관계라면 더 좋지 않을까요? 사실은 판매 티켓 번호를 보유 할 것이고 제품은 외래 키를 어디에서 가져 왔는지를 참조 할 것입니다.

이러한 메트릭은 사실 테이블에 있어야하며 제품 테이블에는없는 것이 좋습니다. 그래서, 저를 정상화시키려는 충동에 맞서 싸우지 않습니까? 아니면 그런 종류의 필터링을 원한다면 의미가 있습니다 -> [X 제품으로 모든 판매가 주어진다면 같은 판매에서 다른 제품의 데이터를 얻습니다].

지침을 따르는 경우, 제품 차원은 상점에서 올 Y 른 독점 종류의 제품마다 하나의 9 지스트 리를 갖게 됩니 까? 그리고 내가 원하는 모든 측정 값은 가격 자체, 판매 가격, 이익 등과 같이 사실 자체에 저장됩니다.

반면에, 일대 다 제품의 차원이 각 제품의 많은 사본. 어느 것이 나쁘다고 생각합니다. 그러나, 나는 그것이 나에게 더 좋은 질문을 줄 것이라고 생각한다.

내가 볼 수 있듯이, 나는이 길의 초기 단계에 있습니다. 그래서 당신이 나를 설명 할 수 있다면, 나는 5 가지 대답처럼 평가할 것입니다.

편집 : Nick.McDermaid @

죄송합니다, 당신은 맞다. 나는 판매 사실의 관점에서 모든 판매 사실에 대해 나는 단 하나의 제품만을 가질 것이지만 한 제품에 대해서는 N 판매와 관련 될 수 있다는 것을 의미한다. 그래서 우리는 상점에있는 모든 다른 제품에 대해 데이터베이스에 하나의 제품 기록이 있습니다. 이것이 올바른 방법이며 올바른 모델을 만드는 법입니다. 또한, 많은 지표는 내가 추측하고있는 "판매량"입니다.

어쨌든, 판매 시점을 /으로했을 때 슬라이싱 및 다이 싱을 허용하지만 예를 들면 다음과 같이 할 수 있습니다. 바나나가있는 모든 판매를 다른 모든 항목과 함께 가져옵니다. 그 판매에서.우리는 여전히이 구조로 할 수 있지만 제품이 반복되고 제품 ID 테이블에 외래 키로 판매 ID가있는 것보다 어렵습니다. Cuz ultimetly 바나나를 가진 모든 판매 (및 그 판매 내 제품)를 원합니다. 그런 다음 측정 항목을 가져옵니다.

+0

"제품은 판매와 일대일 관계입니다." 그렇지 않습니다. 그것은 하나에서 많은 것입니다. 다이어그램에 영업 담당자의 많은 지표가 누락되었습니다. 이 질문에 대한 대답이 많습니까? 대답하기 어려운 많은 질문이 있습니다. –

+0

동의 제품은 판매 할 수있는 다른 제품이며 판매는 제품의 실제 판매이므로 하나의 제품이 여러 제품에 포함될 수 있습니다. 판매 기록 및 하나의 판매 기록은 단 하나의 제품과 관련됩니다. – Rich

+0

귀하의 편집에 대한 응답으로 : 제품은 판매와 관련이 없어야합니다. 그들은 실제 제품을 대표합니다. fact.sale은 레코드에 판매 ID를 포함 시켜서 a) 바나나가있는 모든 판매 ID를 식별 한 다음 b) 판매 ID와 일치하는 판매에 대한 다른 모든 항목을 표시 할 수 있습니다. – Rich

답변

0

당신이 다소 암시하는 것은 퇴행성 차원이 될 것이며, 발생한 거래의 판매 ID/송장 번호/구매 주문 번호로 구성됩니다. 축퇴 차원의 전체 목적은 의미없는 데이터 조각과 관련된 항목을 그룹화하는 것입니다. 예를 들어 A1234의 PO #은 의미가 없으므로 구매에 대해 알려주지 않습니다. 그러나 고객을 위해 제품을 구매 한 날짜와 같은 다른 의미있는 데이터를 식별하는 데 사용할 수 있습니다. 이 문맥에서 PO #은 이벤트를 설명하기 위해 함께 가져 오는 엔티티 모음에 의해 정의됩니다.

데이터웨어 하우징의 또 다른 중요한 개념은 데이터베이스의 스키마를 큐브의 모델에서 추상화하는 것입니다. 큐브 모델에 데이터를 결합하고 그룹화하지 마십시오. 슬라이스하고 필터링합니다. 큐브 모델에는 외래 키가 없습니다. 그것들은 기본 데이터 스키마에서 사용되지만, 모든 작업은 큐브 모델의 배경에서 처리됩니다.

관련 문제