加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 数据库 > MsSql > 正文

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

发布时间:2023-12-21 06:39:30 所属栏目:MsSql 来源:DaWei
导读: 我目前正在开发一个项目,我们需要在数据库中保留给定实体的多个版本.

例如,我们假设我们有一个名为House的实体,它有房间.现在,每当房间被添加,更新或从房屋中删除,或者房屋或任何房间的

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

例如,我们假设我们有一个名为House的实体,它有房间.现在,每当房间被添加,更新或从房屋中删除,或者房屋或任何房间的房产被更改时,我们都需要保留旧信息和新信息.我们希望在“更改集”中将更改组合在一起(实际上问题有点像源控件).

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

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

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

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

作为简要总结,您可以:

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

我的团队传统上使用Type 2(用于更多“最近”数据)和Type 4(用于存档中的“旧”数据)的组合.我们使用更改对象中的change_id对更改进行分组,该对象是对包含更改日期的更改对象的引用以及其他元数据(用户,注释等)

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章