Database 内容版本控制

Database 内容版本控制,database,version-control,data-modeling,content-management,Database,Version Control,Data Modeling,Content Management,我刚刚开始一个项目,我想有一个小的内容与版本控制管理器。但是,我不知道什么是对数据库建模的最佳方法 我有一个包含以下字段的内容表: id主键序列号, content_id int(识别不同内容的字段), 标题varchar, 内容长文本, 版本int默认值为“1”, 创建日期 我已经看到一些CMS在另一个表中分离了实际版本,最好的方法是什么?有什么优化的方法吗 谢谢 我设计了这样的东西,这里是它的要点 我为每个我希望具有行级版本控制的表创建镜像表。假设您有客户表。您的镜像版本控制表将为VER_C

我刚刚开始一个项目,我想有一个小的内容与版本控制管理器。但是,我不知道什么是对数据库建模的最佳方法

我有一个包含以下字段的内容表: id主键序列号, content_id int(识别不同内容的字段), 标题varchar, 内容长文本, 版本int默认值为“1”, 创建日期

我已经看到一些CMS在另一个表中分离了实际版本,最好的方法是什么?有什么优化的方法吗


谢谢

我设计了这样的东西,这里是它的要点

  • 我为每个我希望具有行级版本控制的表创建镜像表。假设您有客户表。您的镜像版本控制表将为VER_CUSTOMER
  • 我希望具有行级版本控制的每个表都有一个名为RECORD_ID(GUID)的列
  • 当一条记录插入到该表中时,我会生成新的GUID并填充该字段。新记录还插入到VER_CUSTOMER表中,记录ID添加到表的自然PK中
  • 当更新记录时,我会再次生成新的GUID。使用此新GUID填充记录\u ID。更新后的记录也会转到VER_CUSTOMER表
  • 删除记录时,我会将客户表上的记录标记为已删除(而不是实际删除该记录)。我已经删除了每个表上的列。当试图删除记录时,我将该列设置为TRUE。同样,已删除记录的副本也会进入VER_CUSTOMER表
  • 所以,在该表上的每一笔交易中,在VER_CUSTOMER表中都有一条对应的记录,记录ID和表的自然PK作为PK。例如,如果CUSTOMER表的主键是CUST_ID,则VER_CUSTOMER的主键将是复合CUST_ID和RECORD_ID


    希望这有帮助…

    这已经存在,没有数据库:

    • (用Haskell编写,使用git或darcs作为后端)
    • (用Perl编写,可以使用各种版本控制系统作为后端)
    它们都是开源的,并且都有一个插件架构,因此可以根据您的特定需求进行定制。(不过,我只使用过gitit。)


    然而,我要指出的是,git在对大型二进制文件进行版本控制方面并不完美,而DARC在这方面做得很糟糕。需要注意的东西。

    为什么不使用现有的版本控制系统?在这里有帮助吗?@maxim1000我不能使用现有的CMS,因为它不符合我的要求。我打算在我的系统的许多部分使用不同的字段来设置控制版本。