Dee*_*ons 6 sql-server-2005 database-design sql-server version-control
我在这里谈论的版本不是版本控制系统。就像在 SO 中一样,我得到了一些可以进行版本控制的文本数据(将它们与问题进行比较)(在编辑、保存、回滚的意义上)。每次编辑、更新、保存的内容都将根据最终用户的选项保存为新版本。我应该如何为这种任务设计一张桌子?
id pk auto increment
content
parentid defaults to 0
version defaults to 0
Run Code Online (Sandbox Code Playgroud)
id content parentid version
1 Hello World 0 0
2 Hello Doggy 1 1
3 Hello Kitty 1 2
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,父 ID 等于现有 ID 的每条记录都将保存在增量版本中(实际上是在服务器端代码中计算的)。显示在 UI 中,如下所示
1.Hello World
-Hello Doggy(Version1)
-Hello Kitty(Version2)
Run Code Online (Sandbox Code Playgroud)
其中每个都显示为链接,以便可以进行进一步的编辑。事情像预期的一样没有问题,但我们想改进这一点,我认为最好从桌子设计开始。
gbn*_*gbn 10
您已经有一个选择:将其保存在一张表中
这是一个“缓慢变化的维度”。
另一个选项是将“当前”和“以前”版本拆分为 2 个表。当您更新当前表时,触发器可以填充“上一个”表。或更新..输出。
您可以通过两种方式查询此数据:
我已经实现了两者:这取决于访问模式和使用情况。
如果我一口气阅读所有版本或加入它,那么一张桌子。如果“以前的”数据仅按需提供,则为表格。
在您的情况下,您可以推迟以前的版本,直到用户单击加载它吗?实际上很少需要以前的版本吗?如果是,那么我建议 2 张桌子。这样,您只需为当前版本移动和渲染较少的数据。
归档时间: |
|
查看次数: |
1609 次 |
最近记录: |