0

我想创建一个类似于 facebook 的通知系统,并考虑实现该系统的结构。

我有两个表:notification(id,uid,query,date)和notification_unread(id,nid,uid,date)。

我很难通过以下方式使用它:如果我在某处发表评论,我会添加:my uid, $_SERVER['QUERY_STRING'], NOW() to notification.

notification_unread想插入尚未阅读的帖子数据。在这种情况下nid应参考通知 id。只有当可能有另一个新帖子时,才会在此表中插入数据。每次用户看到某些内容时,我都会从该表中删除特定条目。

好吧,但是我真的不知道,如果我的这种方法(包括数据库设计)在某种程度上是“错误”或“太复杂”的方式,我无法弄清楚这一点,因为我不能想一个合乎逻辑的方式何时和如何将数据插入到notification_unread. 例如,我不想在发完新帖子后通知自己我发了新帖子。但我想我仍然需要向表中插入数据?

所以,问题是我正在尝试根据需要插入尽可能多的数据并实现这一点最有效。

我希望你能关注我,并非常感谢任何建议!

4

1 回答 1

0

乍一看,它可能看起来非常简单和干净的解决方案,但后来却失败了。正如 podiluska 指出的那样,最好有一个检查字段。

您可以轻松地显示未读的内容,但是一旦用户检查了它会发生什么?您必须将它移到读取表中,这将增加您的磁盘 I/O,这是任何系统中最慢的过程。您可以简单地查询最近 5 个通知或其他内容。

您可能希望创建一个存档表以将旧通知移动到存档表。重要的是维护该通知表,因为所有更新都将在这里。它变得越大,性能就会受到越多的影响。它的影响很长,但您可能想现在而不是以后考虑解决方案。

于 2012-09-20T14:58:23.653 回答