【问题标题】:Implementing Revisioning with SCD2/4使用 SCD2/4 实施修订
【发布时间】:2021-11-02 12:23:37
【问题描述】:

我正在开展一个项目,该项目是一种需要支持组件修订的物料清单管理器。经过一些研究,我偶然发现了缓慢变化的尺寸类型 2 和类型 4,这似乎是此用例中最合适的模式。

但是,我对几个概念有点困惑:

CREATE TABLE projects (
  id    INTEGER PRIMARY KEY,
  name  TEXT
)

CREATE TABLE components (
  id           INTEGER PRIMARY KEY,
  name         TEXT,
  project_id   INTEGER,
  CONSTRAINT fk_project FOREIGN KEY (project_id) REFERENCES projects (id)
)

如果我想实现 SCD 类型 2,组件表中是否会有 start_dateend_dateactive 的附加列?或者,类型 2 是否会添加一个与 components 具有相同结构的 revisions 表和额外的列,而类型 4 是否会添加一个 revisions 表和一个 revisions_history 表?

任何帮助将不胜感激!

【问题讨论】:

  • 您的表格似乎与 OLTP 系统相关,而 SCD 是 Kimball 风格的 OLAP 系统中使用的一种机制 - 因此与您正在做的事情无关。您是在尝试跟踪与项目相关的不同组件,还是尝试跟踪对单个项目或组件记录的更改?
  • @NickW 两者都是,组件可以是一个层次结构(所以只是组件表上的一个附加 parent_id),但我需要跟踪单个记录(组件名称、数量等数据,等)以及它们是如何变化的,以及是否在项目中添加/删除了组件。所以基本上是项目状态在特定时间点的快照。然后能够说“在特定时间点,component_1 看起来像这样,并且能够回滚到那个版本

标签: sql postgresql dimensional-modeling scd scd2


【解决方案1】:

你可以使用temporal_tables

系统周期数据版本控制(也称为事务时间或 系统时间)允许您指定将旧行归档到 另一个表(称为历史表)。

https://pgxn.org/dist/temporal_tables/

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 2015-03-19
    • 2015-01-12
    • 1970-01-01
    • 2023-03-30
    • 2015-07-19
    • 2022-01-03
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多