我们正在构建一个简单的基于网络的系统,其中有人添加了一个记录,例如一个 CMS 页面,在显示在网站上之前,它会得到负责人的批准。

如果作者决定稍后编辑该页面,我们希望根据实时副本创建草稿,在批准后它将替换旧的实时页面。

我们考虑过进行完整的版本控制,但相信我们可以通过仅使用 1. 只是一个草稿、2. 只是一个实时或 3. 一个草稿和一个实时来保持这个简单。

此功能需要跨多个“事物”,而不仅仅是页面。

最后一个问题:您认为将这两条记录存储在同一张表中会更好,还是镜像表更好?

我想这可能取决于但我不喜欢拥有两个具有相同结构的表的理想情况。对于稍微慢一些的操作(因为我们在显示数据时必须一直查询草稿)的权衡是否值得?

最佳答案

不。一种实体类型,一张表。

重新考虑的原因:

  • 草稿记录的数量以千比一的比例超过现场记录。
  • 安全条件要求一些直接访问数据库的用户在 GRANT/REVOKE 级别对草稿或实时记录具有某些权限,但对其他类型的记录没有权限。

  • 要考虑的第二种设计是一个用于项目的表和用于 LiveItem 的第二个表。第二个表仅包含事件项目的 ID。这样您就可以维护您的单表设计,但您可以通过将单列表连接回主表来找到 LiveItem。

    关于ruby-on-rails - 草稿记录是否应保存在单独的表格中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2426581/

    10-12 20:29