【发布时间】: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_date、end_date、active 的附加列?或者,类型 2 是否会添加一个与 components 具有相同结构的 revisions 表和额外的列,而类型 4 是否会添加一个 revisions 表和一个 revisions_history 表?
任何帮助将不胜感激!
【问题讨论】:
-
您的表格似乎与 OLTP 系统相关,而 SCD 是 Kimball 风格的 OLAP 系统中使用的一种机制 - 因此与您正在做的事情无关。您是在尝试跟踪与项目相关的不同组件,还是尝试跟踪对单个项目或组件记录的更改?
-
@NickW 两者都是,组件可以是一个层次结构(所以只是组件表上的一个附加 parent_id),但我需要跟踪单个记录(组件名称、数量等数据,等)以及它们是如何变化的,以及是否在项目中添加/删除了组件。所以基本上是项目状态在特定时间点的快照。然后能够说“在特定时间点,
component_1看起来像这样,并且能够回滚到那个版本
标签: sql postgresql dimensional-modeling scd scd2