我正在为论坛类应用程序设计数据库。用例涉及为用户显示未读主题。因此,我需要跟踪每个用户ID的每个帖子的已读/未读状态。
我有用户和帖子表。我想我应该用userid和postid创建'Read_Posts'表,所以我可以添加每个帖子用户看到过这个表。但是,随着时间的推移,这张桌子会变得非常庞大
还有其他替代方法吗?
谢谢!
答案 0 :(得分:2)
您的设计似乎是正确的。
您可以考虑此功能的到期日期 - 也就是说,任何超过一周(或其他)的帖子都可以从此表中删除(无论是否存档)。
每个用户最多10个未读帖子......
答案 1 :(得分:1)
你可以以某种方式尝试压缩信息。只有当用户登录时,您才需要向用户显示他是否已阅读帖子,因此您应该将信息存储在用户附近。用户可能会以日期排序的方式查看您的帖子,因此附近的读取信息应该在附近,以便有效缓存和读取许多值。
尝试使用此结构的表格:
根据您预期的帖子数量,您可能会使用一周或一天而不是一个月。如果您在应用中缓存该值,则在显示许多帖子时可能会看到性能提升。
答案 2 :(得分:0)
对于每个用户,您可以在注销时(或在他们执行的每个操作时)存储最大的post_id。然后当他们返回时,任何id大于该帖子的帖子都被标记为新的。
它没有说明他们之前访问时没有读过的帖子,但会给出一个简单的指示,表明自上次访问以来新的活动。用户表上只需要一个额外的列,因此影响相对较小。
这假设帖子的整数增加为其ID