我即将在我的论坛中实现一个主题/参数列表,我想为每条消息插入一些类似“读/未读”的标志,并考虑我网站中的每个用户。 / p>
我认为在这样的事情上:watched_topics
id(INT), user(VARCHAR)
和topic_id(INT)
的表格user
。当user
观看页面时,我会插入(如果数据不存在)这些信息。
当另一个watched_topics
在主题中插入新邮件时,我会从表topic_id
中删除所有{{1}}行。
这可能会给您带来麻烦:考虑一下所有主题的 9000个主题和 9000个用户:表格会如此之大( 9000x9000 = 81000000 )。
所以,我认为这不是实施这类东西的最佳策略!任何建议将不胜感激:)
干杯
答案 0 :(得分:4)
我可以建议采用不同的方法吗?
利用网络浏览器历史记录机制。
每次添加新邮件时,每个主题都可以获得一个新的唯一网址。它可以包括消息数量,上次修改时间或两者的组合。
如果用户确实看到了该主题,那么他一定已经访问过该主题,因此正确设置CSS可以帮助识别读取的内容。您甚至可以使用某些客户端脚本来基于此修改页面的行为。
另一种方法是按照您想要的方式保持观看的主题表,但也将上次访问时间存储在用户的个人资料中,并将所有主题显示为自那时以来未发生变化的读取。
然而,假设阅读所有主题的所有用户都不太可能,这是非常安全的。
答案 1 :(得分:3)
你的建议听起来不错。我会使用户字段也是一个外键 - 它给你更多的灵活性。
您确定所有9000个用户都能阅读所有9000个主题吗?我的意思是这个现实吗?如您所说,添加新邮件时会删除主题条目。当发生这种情况时,将删除另外9000个条目:)
我会将表编入索引并继续您的建议(使用user_id更改)。如果表格大小妨碍您,您可以随时更改实施。最有可能它永远不会成为问题。
答案 2 :(得分:1)
对于删除:您可以保存用户看到的最新msg-ID。这样,每次在一个浏览量很大的主题中发布一个msg时,您就不必执行大量的删除操作。