事实表和维度表之间的区别?


112

在阅读有关业务对象的书时,我遇到了术语事实表和维度表。

我想了解维度表和事实表之间的区别是什么?

我在互联网上阅读了几篇文章,但听不清。

有任何简单的例子可以帮助我更好地理解吗?


这个概念很长,无法详细描述,如果您有基本定义以外的特定问题,请告诉我们。
NoChance

基本上,我试图了解维表是否也可以是事实表?

Answers:


52

这是为了回答这一部分:

我试图了解维表是否也可以是事实表?

简短的回答(INMO)为否。这是因为创建两种类型的表的原因不同。但是,从数据库设计的角度来看,维表可以有一个父表,而事实表总是有一个维表(或更多)作为父表。同样,事实表可以聚合,而维度表不聚合。另一个原因是事实表不应被适当地更新,而维度表在某些情况下可以被适当地更新。

更多细节:

事实和维度表以通常所说的星型图出现。星型模式的主要目的是简化一组复杂的标准化表,并将数据(可能来自不同系统)合并为一个数据库结构,可以非常有效地对其进行查询。

它以最简单的形式包含一个事实表(例如:StoreSales)和一个或多个维表。每个“维”条目都有与之关联的0,1或多个事实表(维表示例:地理位置,项目,供应商,客户,时间等)。尺寸具有父级也是有效的,在这种情况下,模型的类型为“雪花”。但是,设计人员试图避免这种设计,因为它会导致更多的联接,从而降低性能。在StoreSales的示例中,“地理”维度可以由列(GeoID,ContenentName,CountryName,StateProvName,CityName,StartDate,EndDate)组成

在Snowflakes模型中,您可以具有2个用于地理信息的标准化表,即:内容表,国家/地区表。

您可以在Star Schema上找到很多示例。另外,请检查一下以查看星型模型Inmon vs. Kimball的替代视图。Kimbal有一个不错的论坛,您可能也想在这里查看:Kimball论坛

编辑:要回答有关4NF示例的评论:

  • 违反4NF的事实表的示例:

销售事实(ID,BranchID,SalesPersonID,ItemID,Amount,TimeID)

  • 事实表不违反4NF的示例:

汇总销售(BranchID,TotalAmount)

这里的关系在4NF

最后一个例子很少见。


1
一些事实表反映了事务级别的数据。有些反映了汇总数据。星型模式中的事实表在3NF中不必是偶数。例如,Sales Fact可能包含(ID,BranchID,Amount,SalesPerson,Time)之类的数据-这违反了3NF,BCNF和4NF,因为SalesPerson和Branch的依赖关系。因此,典型事实表并不在4NF中。
NoChance

258

在数据仓库建模中,星型模式雪花模式事实维度表组成。

事实表:

  • 它包含维度的所有主键以及相关的事实或度量(可以在其上进行计算的属性),例如已售数量,已售数量和平均销售额。

尺寸表:

  • 尺寸表为事实表中记录的所有度量提供描述性信息。
  • 事实表的比较尺寸相对较小。
  • 常用的维度是人,产品,地点和时间。

在此处输入图片说明

图片来源


52
这比接受的答案有用得多
Booji Boy

15
好吧,一张图片值得一千个字。在阅读其他答案时,我什么都不懂,但是这个救了我。
在一个

与图中的事实表相比,维度看起来相对较大,因为它具有更多描述性数据。而且它们的数量也更多
蓝云

1
@Blue Clouds:您必​​须意识到事实表为dim的每种可能组合都包含一个条目(至少如果有数据的话)。虽然“位置维度”最多会为每个可能的位置(例如50个销售点)包含一个条目,并且几乎不会增长,但是当添加新的pos时,事实表可能每天会按位置x项x分支增长。因此,事实很快就会大量增加。
丹尼尔

@Premraj事实表可以不存在主键吗?
Kalana

109

对于如何区分事实表和维度表,这似乎是一个非常简单的答案!

将维度视为事物或对象可能会有所帮助。诸如产品之类的东西可以存在而无需参与业务活动。维是您的名词。它可以独立于业务事件(例如销售)而存在。产品,员工,设备都是存在的东西。一个维要么做某事,要么做某件事。

员工出售,客户购买。员工和客户就是规模的例子,他们确实如此。

产品被出售,它们也是尺寸,因为它们已经完成了一些工作。

事实是动词。事实表中的条目标记了离散事件,该离散事件发生在维度表中。产品销售将记录在事实表中。销售事件将通过出售什么产品,哪个员工出售和哪个客户购买来记录。产品,员工和客户都是描述事件,销售的维度。

此外,事实表通常还具有某种定量数据。售出数量,每件价格,总价,等等。

来源:http//arcanecode.com/2007/07/23/dimensions-versus-facts-in-data-warehousing/


5
出色的写作,仅需5分钟即可理解该概念。
user1951 18-10-10

概括地说:维度是事实事件的属性。DAFE。你在做什么,DAFE?
youcantryreachingme

3
是的,这就是我记得他们的方式。这与您的想法相反。您会认为事实基于单词本身是固定的,而维度是动态的。但是,情况恰恰相反:基本的暗表是一个相当静态的查找列表,而基本的事实表是正在输入的实时数据。
Undrline '19

1
这是我最喜欢的解释,它引起了我的注意,谢谢!
Arjun Arun

9

从一个不太了解DB / DW术语的人的角度来看,我发现此答案更容易理解。

http://databases.about.com/od/datamining/a/Facts-Vs-Dimensions.htm

我建议先进行此操作,然后再进行Emmad Kareem的回答以获取更多详细信息。希望对您有所帮助。


1
完全清楚的第一个解释。一个非常有用的示例,以简单的外行语言显示了一些细节。现在我终于明白了。
莎朗

非常好...我认为您是对的...先读一遍。所有的答案都是有帮助的...但是这个答案可以用一种更“人性化”的语言表达这个概念。
代码新手

4

超级简单的解释:

事实表:将查找ID映射在一起的数据表。通常是应用程序中心的主要表之一。

维度表:用于存储事实表中经常重复的值(例如城市名称或州)的查找表。


2

用最简单的形式,我认为维度表就像一个“主”表,可以说是所有“项”的列表。

事实表是一个描述所有交易的交易表。此外,汇总(分组)数据(如按销售人员划分的总销售额,按分支机构划分的总销售额)-这种类型的表也可能作为独立的事实表存在。


2

维度表 维度表是一个表,其中包含存储在事实表中的度量的属性。该表包含可用于遍历节点的层次结构,类别和逻辑。

事实表包含业务流程的度量,并且包含维表的外键。

示例–如果业务流程是砖块制造

一个人/一台机器生产的平均砖块数量–业务流程的度量


1
  1. 事实表主要由业务事实和外键组成,这些外键引用维表中的主键。维度表主要由作为文本字段的描述性属性组成。
  2. 维度表包含代理键,自然键和一组属性。相反,事实表包含外键,度量和退化的维。
  3. 维度表为事实表的度量提供描述性或上下文信息。另一方面,事实表提供企业的度量。
  4. 比较两个表的大小时,事实表大于维表。在比较表中,比事实表显示的维数更多。在事实表中,观察到的事实数量较少。
  5. 尺寸表必须首先加载。在加载事实表时,必须查看维度表。这是因为事实表具有度量,事实和外键,它们是维表中的主键。

阅读更多:尺寸表和事实表| 之间的区别 尺寸表与事实表http://www.differencebetween.net/technology/hardware-technology/dimension-table-and-fact-table/#ixzz3SBp8kPzo


-3

维度表:没什么,但是我们可以维护有关特征化日期的信息,称为维度表。

示例:时间维度,产品维度。

事实表:没什么,但是我们可以维护有关度量标准或预先计算数据的信息。

示例:销售事实,订单事实。

星型模式:一个事实表链接,其中维表形式为“开始模式”。

在此处输入图片说明


2
(此帖子似乎无法为问题提供高质量的答案。请编辑您的答案,或仅将其发布为对问题的评论)。
sɐunıɔןɐqɐp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.