gpt4 book ai didi

sql - 多版本实体数据库设计

转载 作者:太空狗 更新时间:2023-10-30 01:45:35 25 4
gpt4 key购买 nike

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

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

现在实际模型比这复杂很多,但我认为这个例子说明了问题。

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

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

最佳答案

在数据仓库中,这通常使用 Slowly Changing Dimension (SCD) 来解决。 .

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

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

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

关于sql - 多版本实体数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com