2017-10-19 204 views
0

我在过去几天一直在研究数据仓库,特别是我一直在阅读Data Wharehouse工具包 - 由Kimball和Ross编写的维度建模权威指南如何将产品维度与销售事实联系起来

Uppon,阅读,我来到了第一个exapmle那里是一个销售事实,它与商品相关的尺寸,你可以在波纹管图片中看到:

enter image description here

我想我可以掌握这种关系如何让我们旋转“立方体”切片和切块数据的要点,但是这是我迷失的地方:

在这个例子中,许多其他网络产品是一对一的关系与销售,这是很好,我猜大多数情况下。但是这至少为每次销售的每种产品生成一个销售登记机构。

所以,假如我买了香蕉1根,2个苹果和1个橙子,这会产生至少3的销售登记。再次,我猜这很好,因为它将销售的票证ID存储在销售事实中,我们仍然可以将特定销售中的所有票据关联起来。

但是,如果这是一个用例:销售相关产品说我想让每一个销售有香蕉,并得到的东西,如:这些销售有多少项目,他们的价格成本,他们的利润,像那... 如果事实 - 产品关系是事实one_to_many-产品关系?如果事实证明销售的机票ID和产品的外键引用来自哪里或什么的话?

我认为这些指标应该是在事实表中,并没有在产品表,因为我认为我会想。那么,这难道不是我想要规范化它的冲动吗?或者我想要做这种过滤的方式是有道理的 - > [给定所有X产品的销售,从同一销售中的其他产品获取数据]。

如果我遵循的准则,产品的尺寸将有一个注册表每一个包销类产品的商店将有正确的?如果我是我想要的,我将其存储在事实本身,如价格成本,销售价格,利润等进行测量...

在另一方面,一个一对多产品的尺寸将有每个产品的许多副本。我认为这是不好的。但是,我认为这会给我更好的问题。

正如你所看到的,我在这条道路的早期阶段beginer真的,所以如果你会endulge我在解释给我五样的回答我将不胜感激。

编辑:

对不起@ Nick.McDermaid,你是对的。我的意思是从销售事实的角度来看,对于每一个销售事实,我只有一种产品,但是对于一种产品来说,它可以有N种销售相关。因此,我们在商店的每个不同产品的数据库中都有一个产品记录。这是做到这一点的正确方法,如何正确地建模。此外,许多指标是我猜测的“销售数量”。

无论如何,虽然这允许切片和划片时/如果我们有销售作为视角,但如果我想举例如: 获取其中所有其他项目的香蕉销售在那些销售中。我们仍然可以用这种结构来做到这一点,但是比产品重复的情况下更困难,并且我们在产品表中将销售ID作为外键。 Cuz ultimetly我想获得所有的销售(和销售产品),有一个香蕉。然后从中取出指标。

+0

”产品与销售是一对一的关系“。不是。这是一对一的。该图缺少销售方面的许多指标。这是否回答你所有的问题(你有很多问题 - 难以回答!) –

+0

同意,产品是可以销售的不同产品,销售是产品的实际销售,因此一个产品可以在许多销售记录和一个销售记录只涉及一种产品。 – Rich

+0

回应你的编辑:产品应该与销售无关。他们代表着实际的产品。事实证明可以在记录中包含销售ID,这将允许您a)确定所有销售ID中包含香蕉,然后b)向您显示与该销售ID匹配的销售的所有其他物品。 – Rich

回答

0

你有些暗示将会是一个退化的维度,包括发生的交易的销售ID /发票号/采购订单号。退化维度的全部目的是将与无意义的数据相关的项目分组。例如,A1234的采购订单号本身没有意义,它没有告诉你任何有关采购的信息。但是,它可以用于识别其他有意义的数据,例如为客户购买产品的日期。在这种情况下,PO#由它汇集在一起​​描述事件的实体集合定义。

数据仓库中的另一个重要概念是从多维数据集中的模型抽象数据库中的模式。您不会在多维数据集模型中加入和分组数据。你切片并过滤。多维数据集模型中没有外键。这些用于底层数据模式,但所有这些工作都是在多维数据集模型的幕后处理的。 “

相关问题