我目前正在为一个更大的应用程序构建一个论坛组件,并且我正在考虑对数据库模式的某些部分采用不同的方法。特别是,我正在考虑在一个表格中表示主题和帖子。虽然我认为主题和帖子几乎相同,但我感到有点担心,因为这可能会使未来的事情变得不那么灵活。
当查询特定论坛的主题时,将显示标题和第一篇文章以及一些用户信息(基本上是名称和头像)。在这个应用程序中,除了视图和回复之外,主题和帖子都使用了各种属性;也许还有 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
这样做,使用表继承,在主题中生成帖子将需要通过 TOPIC、POST、USER 和 TOPIC_TYPE 进行 4 表连接。
另一方面,如果我决定采用单表方法,如果 topic_type 是常规帖子,我是否应该简单地将视图、回复、标题和 forum_id 属性保留为空?(topic_type 为显示的主题类型引用了一个适当的图标,并将用于统计等)