跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 大佬们,我这个表该怎么设计
未分類
20 2 月 2020

大佬们,我这个表该怎么设计

大佬们,我这个表该怎么设计

資深大佬 : noobma 48

有些数据需要在后台配置,比如视频、文章、图片等,所以也就有 video、article、picture 这些表,现在要搞一个预览功能,也就是数据配置完成后,先是配置人员预览确认没问题后,再点一下“发布”按钮,这样才会让用户看到新配置的数据。

现在我想到 2 个方法:

  1. 给每个表加个 status 字段,值为 normal、preview、release,点“发布”按钮,先把每个表里面 release 的置为 normal,然后再把处于 preview 状态下的那一条置为 release。
  2. 专门弄个预览表来存预览状态的数据,preview_video、preview_article、preview_picture,点击“发布”的时候在把这些表里面的数据同步到 preview、article、picture。

我觉得上面 2 种方法都不大行啊,点击一下“发布”按钮,要做好多操作,感觉容易出幺蛾子啊。

求各位大佬指点下我这个赶鸭子上架的菜鸡,另外就是大佬们有没有常用的表设计范式的书,推荐一些,不胜感激

大佬有話說 (12)

  • 資深大佬 : lhx2008

    第一种吧

  • 資深大佬 : wangyzj

    第一种适合小场景
    第二种适合大规模 cdn 场景

  • 資深大佬 : iamwho

    各个表加 draft 字段,需要权限才能看到,或为 0 显示。

  • 資深大佬 : zhuzhibin

    听不太明白 如果仅仅是 release 版本 用户才可以浏览得到 那么就统一 state 去管理即可 类似你说的 A 方案 整个页面发布的流程就是
    预览->发布 管理 state 就好 后续复杂也可以补充回滚啥的

  • 資深大佬 : xiaofan2

    第二种没必要,你相当于插了两次相同数据

  • 資深大佬 : avenger

    加个 flag 就好,参考 wordpress

  • 主 資深大佬 : noobma

    谢谢各位大佬

  • 資深大佬 : Sunyanzi

    为什么我做的预览从来都没有涉及数据库的 … 都只是用既定的模版渲染一遍用户输入的数据而已 …

    换言之就是假装页面上展示的这些数据是从库里读出来的 … 实际上都是前一页输入的还没入库 …

    顶这个需求 … 在我看来更像一个「待审核」的状态 … 默认发布只有特定权限组可见 … 后续才扩展可见性 …

    那么这样毫无疑问是第一种解决方案 … 也就是一个 status 字段的事情 … 何必冗余表呢 …

  • 主 資深大佬 : noobma

    @Sunyanzi 主要是有些视频和图片需要传到 OSS 上面,如果不在服务器上存住状态的话,一刷新或者换个浏览器,我那个 OSS 上面的空间就被浪费了

  • 資深大佬 : jackrebel

    第一种就好, 第二种你一旦改了主要表的结构, 你这临时表也要跟着改。 要改的地方好多。

  • 資深大佬 : yb3712590

    之前看 informatica 元数据的版本控制设计思路,供参考。
    对象表和模块表存在 visible、validated、version 和 last_save_timestamp 等字段。
    更新某个对象产生了新的版本,会在一张额外的验证表中留下对象 ID 和新的时间戳,对模块查看时,比对模块包含的每个对象的验证记录,时间戳落后则标记为失效模块,进而要求人工验证并刷新整个模块的版本,记录新的时间戳,此时版本最新且模块可用,但只对操作人可见,对应 preview。
    最后对有效模块版本的签入,标记 visible,对所有人可见,对应发布操作。

  • 資深大佬 : mcfog

    几乎任何情况下我都选第二种

    我就不信发布以后就没有修改的需求,有一个人预览就没有第二个人审核的需求

    编辑的时候可能是一个后台表对应一个编辑界面,复杂字段 json 揉一坨完事儿,发布到前台主站可能是三个表外加 es 上报

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具