我目前正在为更大的应用程序构建一个论坛组件,我正在考虑对数据库模式的某些部分采用不同的方法。特别是,我正在考虑在单个表中表示主题和帖子。虽然我认为主题和帖子几乎相同,但我感到有点担心,因为这可能会使未来的事情变得不那么灵活。
当查询特定论坛的主题时,将显示标题和第一篇文章以及一些用户信息(主要是姓名和头像)。在这个应用程序中,除了视图和回复外,主题和帖子都使用了各种属性;可能还有 title 和 forum_id(forum_id,因为这意味着如果将主题更改为另一个论坛而不是更改主题关系中的 forum_id 属性,则可能需要影响数百条记录。
这些表格看起来像我在下面看到的:
TOPIC POST
topic_id poster_id
forum_id topic_id
poster_id content
title upvote
views dnvote
replies closed
post_id deleted
last_edited
last_editor
parent_id
content
post_id
Run Code Online (Sandbox Code Playgroud)
这样做,使用表继承,生成主题中的帖子将需要通过 TOPIC、POST、USER 和 TOPIC_TYPE 进行 4 表连接。
另一方面,如果我决定采用单表方法,如果 topic_type 是常规帖子,我是否应该简单地将 views、reply、title 和 forum_id 属性保留为 null?(topic_type 为显示的主题类型引用适当的图标,并将用于统计等。)