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

Sql 维度表和域表是一样的吗?,sql,data-modeling,Sql,Data Modeling,我想我知道域表是什么(它基本上包含其他列可以包含的所有可能值),并且我在维基百科中查找了维度表。不幸的是,我很难理解他们在那里的描述,因为他们用另一个术语来解释它:“事实表”,它被解释为“由一个业务流程的度量、度量或事实组成”。对我来说,这是非常重复的,也就是说。有人能用简单的英语解释一下吗?简短版本: 域表示从事实表中提取的数据,以使事实表更小 维度表示为更快查询而预先聚合的轴 下面是一个通俗易懂的长版本: 你可以从一些事实开始。例如,您的公司收到的每一笔销售,包括日期、产品、价格、地理

我想我知道域表是什么(它基本上包含其他列可以包含的所有可能值),并且我在维基百科中查找了维度表。不幸的是,我很难理解他们在那里的描述,因为他们用另一个术语来解释它:“事实表”,它被解释为“由一个业务流程的度量、度量或事实组成”。对我来说,这是非常重复的,也就是说。有人能用简单的英语解释一下吗?

简短版本:

  • 表示从事实表中提取的数据,以使事实表更小
  • 维度表示为更快查询而预先聚合的轴

下面是一个通俗易懂的长版本:

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

您希望运行的大量查询原则上是事实表上的一些相当简单的查询。然而,你的事实表太大了。您需要加快查询速度


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

如果您有足够小的数据集,查询整个事实表的速度可以接受,那么这很好。但是很多公司有太多的数据,这是不够的,所以他们必须更聪明


(2) 提高速度的第二个技巧是预计算查询。这里有一种方法可以做到这一点。确定一组维度,然后沿维度和维度组合进行预计算

例如,客户名称是一个维度,一些查询是针对每个客户名称的,而其他查询则跨越所有客户。因此,您可以向事实表中添加预计算的事实,这些事实具有跨所有客户的预聚合数据,并且客户名称已成为一个维度

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

对任意数量的其他尺寸重复此操作

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

在实践中,这会导致预聚合超出您实际需要的内容。因此,构建数据仓库的人做了一些聪明的事情,让他们在预先聚合可能没有人想要的组合所花费的精力与运行时计算可能提前完成的组合所花费的精力之间进行权衡

如果你愿意,你可以从 我想更深入地研究这个话题


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

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

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


通过规范化获得的一些优势可以通过设计雪花模式而不是星型模式来实现。然而,无论是星型模式还是雪花型模式都不会出现更新异常。它们通常用于数据仓库或报告数据库,将数据从操作数据库复制到其中一个数据库是编程方面的挑战。有专门为此目的而出售的工具。

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

  • 销售业务流程中的“月度销售编号”
  • 利润业务流程中的“月利润额”
其中大多数是可加性的(销售额、利润),一些是半可加性的(截至年的余额),一些不是可加性的(单价)

事实表中的详细程度称为表中的“粒度”,即粒度可以是细的,也可以是粗的。事实表还包含维度表的外键

而维度表是那些包含有助于描述事实表事实的属性的表

以下是维度表的类型:

  • 缓慢变化的尺寸
  • 垃圾尺寸
  • 确认尺寸
  • 退化维数

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

关于数据仓库和