【发布时间】:2011-01-09 23:56:51
【问题描述】:
我正在为论坛类型的应用程序设计数据库。用例涉及为用户显示未读主题。因此,我需要跟踪每个用户 ID 的每个帖子的已读/未读状态。
我有用户和帖子表。我想我应该使用用户 ID 和 postid 创建“Read_Posts”表,这样我就可以将每个用户看到的帖子添加到这个表中。但是,随着时间的推移,这张桌子会变得非常庞大。
还有其他替代方法吗?
谢谢!
【问题讨论】:
-
我认为您可以创建包含 post_id 的表和另一个包含逗号分隔的用户 ID 字符串的列。这样你至少可以最小化表中的行数。
-
@Harry - 并增加查询的复杂性。更不用说让它们变得更贵了。
-
@Oded:不会增加查询复杂度。只是增加对数据进行操作的编码逻辑的复杂性。而且据我认为,从逗号分隔的字符串中获取 id 数组并不难。它还有助于查询,我们在其中编写“user_id 在哪里('这里我们可以直接获取逗号分隔的字符串')”。
-
@Harry - 那么,如果您想要用户 X 已阅读的帖子列表?
-
@Oded:哦。是的,您是对的,如果我们希望用户阅读帖子,这将失败。这将增加这项任务的复杂性。 :-(
标签: database-design