实时和草稿数据的数据库模型

sql*_*han 6 database-design

我一直在考虑在数据库中保存"实时"数据集和草案数据集的最佳方法.实时版本显示在网站上,草稿版本一直处于工作状态,直到它准备好上线为止.该模型是关系型的,由许多表组成.

我目前的方法是拥有2个数据库,一个用于草稿,一个用于实时.当您将数据提升为活动时,SQL只会将草稿数据库中的数据复制到实时数据库.

这很好,但有点慢,看起来很乱.经常SQL必须考虑两组表.

另一种方法是将Live指标作为每个表的键的一部分,因此我可以在同一个表中保存实时和草稿 - 并更新指标以使数据生效. - 我并没有真正卖掉这个想法.

  • DBMS是Sybase.

如果有人有任何其他建议,我将不胜感激.

UM

KM.*_*KM. 2

有一张桌子

DataTable
    DataKey
    DataMode
    Data...
Run Code Online (Sandbox Code Playgroud)

PK为DataKey+DataMode
检查约束:DataMode IN ('L','D') --live or Draft


当它上线时,您首先使用 DataMode='D' --draft 进行插入,使用 INSERT SELECT 将其复制到同一个表,设置 DataMode='L'
始终编辑 DataMode='D',并将其推送到 DataMode=完成后“L”。

当您想在模式中显示数据传递时,请使用 WHERE DataKey=@x AND DataMode=@Mode

我不确定您将如何处理删除(草稿删除然后将其推送到实时状态?)您可能需要添加状态列:

    DataStatus  --'A'ctive 'D'eleted
Run Code Online (Sandbox Code Playgroud)

在一张表中执行此操作允许共同使用所有 sql 以适用于“L”ive 或“D'raft”。