MySql:我如何实现一种“读/未读”主题?

时间:2011-01-28 10:50:03

标签: mysql

我即将在我的论坛中实现一个主题/参数列表,我想为每条消息插入一些类似“读/未读”的标志,并考虑我网站中的每个用户。 / p>

我认为在这样的事情上:watched_topics id(INT), user(VARCHAR)topic_id(INT)的表格user。当user观看页面时,我会插入(如果数据不存在)这些信息。

当另一个watched_topics在主题中插入新邮件时,我会从表topic_id中删除所有{{1}}行。

这可能会给您带来麻烦:考虑一下所有主题的 9000个主题 9000个用户:表格会如此之大( 9000x9000 = 81000000 )。

所以,我认为这不是实施这类东西的最佳策略!任何建议将不胜感激:)

干杯

3 个答案:

答案 0 :(得分:4)

我可以建议采用不同的方法吗?

利用网络浏览器历史记录机制。

每次添加新邮件时,每个主题都可以获得一个新的唯一网址。它可以包括消息数量,上次修改时间或两者的组合。

如果用户确实看到了该主题,那么他一定已经访问过该主题,因此正确设置CSS可以帮助识别读取的内容。您甚至可以使用某些客户端脚本来基于此修改页面的行为。


另一种方法是按照您想要的方式保持观看的主题表,但也将上次访问时间存储在用户的个人资料中,并将所有主题显示为自那时以来未发生变化的读取。


然而,假设阅读所有主题的所有用户都不太可能,这是非常安全的。

答案 1 :(得分:3)

你的建议听起来不错。我会使用户字段也是一个外键 - 它给你更多的灵活性。

您确定所有9000个用户都能阅读所有9000个主题吗?我的意思是这个现实吗?如您所说,添加新邮件时会删除主题条目。当发生这种情况时,将删除另外9000个条目:)

我会将表编入索引并继续您的建议(使用user_id更改)。如果表格大小妨碍您,您可以随时更改实施。最有可能它永远不会成为问题。

答案 2 :(得分:1)

对于删除:您可以保存用户看到的最新msg-ID。这样,每次在一个浏览量很大的主题中发布一个msg时,您就不必执行大量的删除操作。