在事实 Table 中拥有所有外键的 advantages/disadvantages 是什么?

What are the advantages/disadvantages of having all Foreign Keys in the Fact Table?

我们的团队计划将缺失的维度键 (FK's) 添加到我们的事实表中,以允许在我们的维度和事实表之间直接查询,而不是通过表进行查询。本质上,更倾向于星型模式。这将提高查询性能(因为需要更少的连接)。

我在网上看到外键 (FK) 约束会影响插入、更新和删除的性能。

还有其他我们应该考虑的事情吗?

主要缺点是事实 table 记录的大小增加。您没有指定行的大小,但添加新的外键可能会显着影响行的大小。

在大多数数据库中,事实上 table 增加行大小会减慢查询速度。但是,这在列式数据库中不是什么大问题。

事实上,增加的大小可能超过避免连接的优势。

一般来说,我不会担心主键上的中小型维度 table 上的联接。也就是说,在做出如此彻底的改变之前,对全面数据进行大量测试。

insert 的影响只是需要验证密钥。但是,这是针对引用 table 的主键进行检查,因此这些检查非常快。更多显然比更少更昂贵,但开销可能不会成为阻碍。

有一件事可能是优点也可能是缺点,即维度在输入时是静态的。更新事实 table 通常非常昂贵。但是,尺寸确实会发生变化。例如,偶尔会创建新的国家。这在历史数据中是如何表示的?

在雪花模式中,您的最低级别的地理(可能)比国家/地区更精细,并且只需要更新维度。而且,如果最低级别需要在事实 table 中更新,那将影响相对较少的行。