小编典典

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

all

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

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

我在互联网上阅读了几篇文章,但我无法清楚地理解..

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


阅读 290

收藏
2022-08-20

共1个答案

小编典典

这是回答部分:

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

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

更多细节:

事实表和维度表以通常称为星型模式的形式出现。星型模式的主要目的是简化一组复杂的规范化表并将数据(可能来自不同系统)整合到一个可以以非常有效的方式查询的数据库结构中。

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

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

您可以在 Star Schema 上找到大量示例。此外,请查看此以查看星型模式模型Inmon 与
Kimball
的替代视图。Kimbal 有一个很好的论坛,您可能还想在这里查看:Kimball
论坛

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

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

销售资料(ID、BranchID、SalesPersonID、ItemID、Amount、TimeID)

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

AggregatedSales (BranchID, TotalAmount)

这里的关系是 4NF

最后一个例子比较少见。

2022-08-20