一个问答数据库表设计问题?

发布于 2022-09-12 04:14:00 字数 318 浏览 48 评论 0

在表设计上有一个疑问,大体上需求:

  • 前端用户提交问题后,进入后台审核;
  • 后台审核成功后在前台显示出来;
  • 如果用户继续修改,那么问题继续进行审核,但是原先的信息仍然可以看到,如果审核失败则需要重新修改;

想问下这种结构的MySQL表格如何设计比较好,是单独拆分成问题+审核表,还是在一张表里使用多个字段分别表示当前信息+修改信息比较好。

目前考虑的是两张表,分别用questions+checks表示,questions里永远只显示审核成功的(显示或者隐藏),checks里记录需要审核的,审核成功后将信息同步到questions中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥醉 2022-09-19 04:14:00

如果不考虑问题版本的问题,那一个表两个字两个字段更清晰一些。

id(uuid),
title(string),
question(string), // 正式版本的问题
createdOn(timestamp),
lastModified(timestamp),
author(string),
type(enum),
flag(enum),
underChecking(boolean), // 是否存在审核中的版本
changed(string), // 审核中的问题版本
changedOn(timestamp),
... //其他字段

这样的结构,question为问题的发布版本。默认情况下underChecking为false,changed为空,lastModified与createdOn相同,changedOn为空。
当用户发起修改问题的请求时,underChecking为true,changed为修改后的待审核版本,changedOn为修改提交的时间。
审核通过,underChecking为false,question替换为changed,changed置空,lastModified替换为changedOn,changedOn置空。

考虑问题的版本,就需要checks表,所有问题都存在checks表中,在questions表中关联checks的id,决定显示哪一个版本。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文