数据历史表与使用当前记录标志

Ano*_*per 4 slowly-changing-dimension data-versioning

处理包含多个版本的数据记录时有两种策略。一种是将当前记录放在一张表中,将其过去的版本放在历史表中。

另一种是将所有版本放在同一个表中,并在当前版本上添加一个标志。

我已经看到了每种策略的争论,并且我已经看到社区在不同的帖子中同意这两种策略。

如果没有正确答案,如何决定采取哪种策略?我可以看到将所有记录保留在同一个表中以简化查询(所有记录都在一个表中)和一般情况下表较少的优点。

另一方面是,您拥有这些巨大的表,其中包含大量记录,具体取决于表之间的版本数量和复杂关系。

Pro 历史表数据库设计是否需要修订?数据库历史记录更改,相同还是不同的表?

Pro 当前记录标志https://softwareengineering.stackexchange.com/questions/94489/handling-deleted-users-separate-or-same-table

其他文章https://softwareengineering.stackexchange.com/questions/94489/handling-deleted-users-separate-or-same-table

Mar*_*son 6

如果我们明确讨论数据仓库场景中缓慢变化的维度,并且您遵循 Kimball 方法,那么实际上有超过 2 种不同的方法可以实现这一点。

Kimball 方法有7 种不同的记录 SCD 的方法(向下滚动到链接中的缓慢变化维度技术)。类型 1、2 和 3 显然是最常见的,我真的不知道有人使用 5、6 或 7。

历史表是类型 4,是我当前使用的表。它使我们能够使“实时”表尽可能紧凑。我们很少查询历史表,因此它们实际上只是在我们需要审核维度的历史记录时才存在。该表与任何其他表之间没有关系,并且它有一个代理 ID 作为主键。

我曾在使用类型 2 的地方工作过,即 Flag 方法,它可能会导致关键表上不必要的大表增长。然而,这只是我的经验!