在阅读有关业务对象的书籍时,我遇到了术语事实表和维度表。
我想了解维度表和事实表之间的区别是什么?
我在互联网上阅读了几篇文章,但我无法清楚地理解..
有什么简单的例子可以帮助我更好地理解吗?
这是回答部分:
我试图了解维度表是否也可以是事实表?
简短的回答 (INMO) 是否定的。那是因为这两种类型的表是出于不同的原因创建的。但是,从数据库设计的角度来看,维度表可以有一个父表,就像事实表一样,事实表总是有一个(或更多)维度表作为父表。此外,事实表可以聚合,而维度表不聚合。另一个原因是事实表不应该就地更新,而维度表在某些情况下可以就地更新。
更多细节:
事实表和维度表以通常称为星型模式的形式出现。星型模式的主要目的是简化一组复杂的规范化表并将数据(可能来自不同系统)整合到一个可以以非常有效的方式查询的数据库结构中。
在其最简单的形式中,它包含一个事实表(例如:StoreSales)和一个或多个维度表。每个维度条目都有 0,1 个或更多与之关联的事实表(维度表示例:地理、项目、供应商、客户、时间等)。维度具有父级也是有效的,在这种情况下,模型的类型为“Snow Flake”。然而,设计师试图避免这种设计,因为它会导致更多的连接,从而降低性能。在 StoreSales 的示例中,Geography 维度可以由列(GeoID、ContentName、CountryName、StateProvName、CityName、StartDate、EndDate)组成
在雪花模型中,您可以有 2 个用于地理信息的标准化表,即:内容表、国家表。
您可以在 Star Schema 上找到大量示例。此外,请查看此以查看星型模式模型Inmon 与 Kimball的替代视图。Kimbal 有一个很好的论坛,您可能还想在这里查看:Kimball 论坛。
编辑:回答有关 4NF 示例的评论:
销售资料(ID、BranchID、SalesPersonID、ItemID、Amount、TimeID)
AggregatedSales (BranchID, TotalAmount)
这里的关系是 4NF
最后一个例子比较少见。