为啥要分出事实表fact和维度表dim

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥要分出事实表fact和维度表dim相关的知识,希望对你有一定的参考价值。

参考技术A 我们的查询和聚合更加简单,从查询效率上来说要更好一些。但是我们通常又为什么会选择将这个单独的属性还是放在维度表中,这里有以下几个原因是我们需要考虑的:

数据仓库的设计是一个迭代的开发过程,开发一年,维护若干年,如果我们可以考虑到以上原因,就可以很清楚的考虑到在设计阶段是否有必要将单一属性挑选出来作为维度来设计了。

结合事实表和维度表的SQL语句?

【中文标题】结合事实表和维度表的SQL语句?【英文标题】:SQL statement to combine fact table and dimension table? 【发布时间】:2021-03-30 01:52:32 【问题描述】:

如果我有一个事实表和一个维度表,例如如下:

fact_table

事实密钥

dim_key

收入

成本

维度表

dim_key

广告商

产品

事实表有 4 行,维度表有 3 行。如何合并两个表?

【问题讨论】:

你试过使用外键吗? 我该怎么做?只使用普通的 dim_key 行? 是的 - 完全正确。当您使用查询命令来获取连接的表时,请使用JOINs。当表之间存在关系时,外键是很重要的。看看下面的答案:) 【参考方案1】:

由于fact_tabledimension_table 之间存在关系,您可能需要执行以下操作:

alter table fact_table
    add constraint fact_table_fk
        foreign key (dim_key) references dimension_table(dim_key);

对于您在选择行时要求的查询,请使用INNER JOIN 或任何其他JOIN statements

SELECT * FROM fact_table f
INNER JOIN dimension_table d
ON f.dim_key = d.dim_key

【讨论】:

以上是关于为啥要分出事实表fact和维度表dim的主要内容,如果未能解决你的问题,请参考以下文章

结合事实表和维度表的SQL语句?

事实和维度表:一对一的关系

事实表上覆盖索引的用处

Oracle 从多个表更新

将一个维度加入具有不同粒度的多个事实表

BIEE04_当维度表中的维不存在事实表中,需要展示所有维度并且数据类展示为0