繁体   English   中英

多版本实体数据库设计

[英]Multi version entity database design

我目前正在开展一个项目,我们需要在数据库中保留给定实体的多个版本。

例如,假设我们有一个名为 House 的实体,它有房间。 现在,无论何时从房子中添加、更新或删除房间,或者房子上的属性或任何房间发生变化,我们都需要保留旧信息和新信息。 最好我们希望将更改组合在一个“更改集”中(实际上问题有点像源代码控制)。

现在实际的 model 比这复杂得多,但我认为这个例子说明了这个问题。

我非常想听听这个问题的一些可能的解决方案。

我们正在运行 Microsoft SQL Server 2008 R2。

在数据仓库中,这通常使用渐变维度 (SCD)来解决。

作为一个简短的总结,您可以:

  • 制作代理键(实例 ID)并使用自然键和版本号(或有效日期/时间范围)来跟踪更改(类型 2 SCD)
  • 在您的房间表中有 N 列用于 N 个版本(类型 3 SCD)
  • 有一个单独的“rooms_history”表,并且只将当前实例保留在 rooms 表中(类型 4)

我的团队传统上使用类型 2(用于更多“最近”数据)和类型 4(用于存档中的“较旧”数据)的组合。 我们在被更改的对象中使用change_id对更改进行分组,该对象是对change object 的引用,其中包括更改日期以及其他元数据(用户、评论等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM