gpt4 book ai didi

sql - 草稿/直播内容系统数据库设计

转载 作者:太空狗 更新时间:2023-10-30 01:50:50 27 4
gpt4 key购买 nike

我一直在从事一个需要内容的草稿/实时版本的项目,并想到了如下设计:

Article
ID
Creator
CreationDate
DraftContent(fk to ArticleContent)
PublicContent(fk to ArticleContent)
IsPendingApproval

ArticleContent
Title
Body

我想知道是在发表文章时更改外键更好,还是将内容从草稿表复制到实时表更好。

有什么建议吗?

编辑:草稿和实时版本同时存在,尽管实时版本是唯一对公众可见的版本。只能一稿一活表

这种设计的部分原因是强制用户在他们的文章上线之前获得批准。

更新:

我们决定使用 Kieren 的解决方案稍作修改。我们决定使用单个状态列,而不是像 IsPublished IsLive 这样的项目使用列。否则设计保持不变。

最佳答案

上线然后“发布”的文章草稿

通常的事情是在文章表上有一个状态/类型标志 - IsLive

使用单独的表格是不必要和多余的;更改外键也没有多大意义。将文章视为有效对象,无论是草稿还是实时。唯一的区别是,在大多数情况下,您只想显示实时文章。在将来的某些情况下,您可能希望同时显示两者。

最初上线后可能会被编辑并有新草稿版本的文章

就一篇同时具有实时版本和草稿版本的文章而言 - 最常见的模式是拥有一个主 Article 实体/对象,然后说 ArticleVersion 即将到来从那个。 ArticleVersion 将具有 IsLive 属性,或者甚至更好,Article 本身将具有属性 CurrentLiveVersionId。这样就可以有实时版本和草稿版本,但您通常只需将 Article 加入 CurrentLiveVersionIdArticleVersion 即可当前的实时版本。

拥有 ArticleVersion 表的优势包括可以存储文章的整个历史记录(更改日志),因此您可以根据需要恢复到以前的版本,或查看更改。所有这些都是为了非常低的实现成本..

如果我能阐明这个方法,请告诉我。

关于sql - 草稿/直播内容系统数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7896038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com