Php 类似Facebook的通知系统
我想创建一个类似facebook的通知系统,并考虑实现该系统的结构 我有两个表:Php 类似Facebook的通知系统,php,mysql,database-design,notifications,Php,Mysql,Database Design,Notifications,我想创建一个类似facebook的通知系统,并考虑实现该系统的结构 我有两个表:notification(id,uid,query,date)和notification\u unread(id,nid,uid,date) 我想用以下方法来使用它: 如果我在某个地方发表评论,我会在通知中添加:我的uid,$\u SERVER['QUERY\u STRING'],NOW() 有了notification\u unread我想插入尚未读取的帖子数据。在这种情况下,nid应参考通知id。只有在可能有另一
notification
(id,uid,query,date)和notification\u unread
(id,nid,uid,date)
我想用以下方法来使用它:
如果我在某个地方发表评论,我会在通知中添加:我的uid,$\u SERVER['QUERY\u STRING'],NOW()
有了notification\u unread
我想插入尚未读取的帖子数据。在这种情况下,nid
应参考通知id。只有在可能有另一个新帖子时,数据才会插入此表中。每次用户看到某些内容时,我都会从该表中删除特定条目
然而,我真的搞不清楚,我的这种方法(包括DB设计)是否是某种“错误”或“过于复杂”的方式
我想不出实现这一点的方法,因为我想不出一种逻辑方法,即何时以及如何将数据插入notification\u unread
。例如,我不想通知自己,在我发了一篇新帖子之后,我发了一篇新帖子。但我想我还是要在表中插入数据
所以,问题是,我正在尝试插入所需的尽可能多的数据,并实现这一最有效的方法
我希望你能跟随我,并将非常感谢任何建议 乍一看,这似乎是一个非常简单、干净的解决方案,但后来就失败了。
正如波迪卢斯卡所指出的,最好有一个检查区
你可以很容易地显示一个未读的,但是一旦用户检查了它,会发生什么呢?您必须将其移动到读取表中,这将增加磁盘I/O,这是任何系统中最慢的进程。您可以简单地查询最后5个通知或其他内容
您可能需要创建一个归档表,以便将旧通知移动到归档表中。这里重要的事情是维护通知表,因为所有的更新都在这里。它变得越大,对性能的影响就越大。这是一个很长的时间效应,但是现在你可能想考虑这个解决方案,而不是以后。我对这个思想过程感到好奇,它让你认为两个表比一个字段有一个读或不读的通知表要好,因为读过的消息是一个与已经创建的消息不同的事实。