维度表和域表是一样的吗?

时间:2011-05-31 19:14:45

标签: sql data-modeling

我想我知道域表是什么(它基本上包含了其他一些列可以包含的所有可能的值),并且我在维基百科中查找了维度表。不幸的是,我很难理解他们在那里的描述,因为他们用另一个术语解释它:“事实表”,其解释为“由业务流程的度量,指标或事实组成” “。对我而言,这是非常重言同义的,not helpful。有人可以用普通英语解释这个吗?

3 个答案:

答案 0 :(得分:4)

简短版本:

  • 表示您从事实表中提取的数据,以使事实表更小。
  • 维度表示您预先聚合的轴,以便更快地进行查询。

这是一个简单的长版本:

您从一些事实开始。例如,您的公司收到的每一笔销售,包括日期,产品,价格,地理位置,客户名称 - 无论您的信息的完整组合如何 - 每次销售。你可以把这些事实放在一张大桌子里。

您要运行的各种查询原则上是对事实表的一些相当简单的查询。但是,你的事实表变得非常庞大。您需要更快地进行查询。


(1)让它更快的第一个技巧是将数据移出它,因此它更小。因此,您可以获取“长文本”的每一列,将其可能的值放入域表中,并将原始列替换为该表中的id。这将使您的事实表变得更小,如果需要,您仍然可以获取原始数据。这使得查询所有行的速度更快,因为它们占用的数据更少。

如果你有足够小的数据集来查询整个事实表是可以接受的快,那就没关系。但是很多公司都有足够的数据,所以他们必须更聪明。


(2)使其更快的第二个技巧是预先计算查询。这是一种方法。确定一组维度,然后沿维度和维度组合预先计算。

例如,客户名称是一个维度,一些查询是按客户名称,其他查询是所有客户。因此,您可以在事实表中添加预先计算的事实,这些事实已在所有客户中预先汇总数据,并且客户名称已成为一个维度。

维度的另一个好选择是地理位置。您可以添加按县,州和所有位置聚合的摘要记录。在完成客户名称汇总之后完成此总结,因此它将自动记录给定邮政编码中所有客户的总销售额。

对任意数量的其他尺寸重复。

现在当有人提出查询时,很有可能他们的查询可以被重写以利用您预先聚合的维度,只查看一些预先汇总的事实,而不是所有单独的销售记录。这将大大加快查询速度。

在实践中,这比预期聚合更多。因此,构建数据仓库的人做了一些聪明的事情,这些事情让他们可以牺牲预先聚合的组合,而这些组合是没有人可能想要的,而不是需要预先计算组合的运行时工作。

  

如果您愿意,可以从http://en.wikipedia.org/wiki/Star_schema开始   我想深入探讨这个话题。

答案 1 :(得分:0)

事实表和维度表一起构成了一个星型模式。 Star Schema是SQL表中多维数据模型的表示。多维数据模型将统计信息“事实”存储为多维空间中的值,其中每个维度中的“位置”为事实建立上下文的一部分。多维数据模型是在推进data warehousing概念的背景下制定的。

维度表提供每个维度的关键字以及与该维度相关的属性。

MDDB可以存储在专门为此目的而构建的数据立方体中,而不是使用SQL(关系型)数据库。 Cognos是一家拥有自己的数据立方体产品的供应商。与使用特殊用途的数据立方体产品相比,使用SQL数据库和星型模式有一些优点。使用数据立方体产品还有其他优点。有时,SQL + Star模式方法的优势超过了数据立方体产品的优势。

通过设计Snowflake Schema而不是Star模式,可以获得规范化所获得的一些优势。但是,星型模式和雪花模式都不会免于更新异常。它们通常用于数据仓库或报告数据库,将数据从操作数据库复制到其中一个数据库中是一项编程挑战。为此目的出售了一些工具。

答案 2 :(得分:0)

事实表是包含业务流程的度量或度量或事实的表。例如:

  • "每月销售数量"在销售业务流程中
  • "每月利润额"在利润业务流程中

大多数是添加剂(销售,利润),有些是半添加剂(余额为),有些不是添加剂(单价)。

Fact表中的详细程度称为" grain"该表的格式,即粒度可以是精细的或粗糙的。事实表还包含维度表的外键。

而Dimension Tables是那些包含有助于描述事实表事实的属性的表。

以下是维度表的类型:

  • 慢慢改变尺寸
  • 垃圾尺寸
  • 确认尺寸
  • 退化维度

要了解更多信息,您可以浏览Data Warehousing Tutorials