【发布时间】:2021-01-03 12:00:53
【问题描述】:
让我们假设一个简单的场景,其中我们有 3 个表 Employee、Designation 和 Allowance:
我面临的问题是员工的指定和与指定相关的津贴金额将来可能会发生变化。
如果发生任何此类更改,将根据新的主数据提供新的配额。但旧月份的报告现在将显示无效数据。因为约翰现在是一名军官,并根据他的指定领取津贴。但将来他可能会升职,他的指定可能会变成经理。然后他将获得经理津贴。然后,如果有人去津贴报告并过滤约翰上个月的数据。该报告将显示作为军官给予 john 的津贴,但他在该报告中的指定将是经理,因为 john 的指定 ID 已更新。
所以我的问题是,记录、维护和跟踪主数据的最佳方式是什么,即使主数据将来发生变化,与之关联的交易数据仍然有效。
【问题讨论】:
-
这叫渐变维度
-
任何想法,如何在关系数据库中处理它们?
-
我是否必须在每次更改时维护此类维度的版本,然后将我的事务数据与此版本相关联,而不是与原始维度的表相关联。或者我是否应该将所有此类数据以非规范化方式存储在交易本身中,以便在我的报告中我不必查询任何其他表,并且在交易时适用的所有主数据都存储在该交易本身中。
-
对此有不同的方法。比如看Wikipedia,网上也有很多想法
-
除此之外,您似乎已经对
Amount进行了非规范化处理,因此您已经有了根据他们的当代名称为每位员工应用多少津贴的历史记录。
标签: sql-server database database-design relational-database