Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类似Facebook的通知系统_Php_Mysql_Database Design_Notifications - Fatal编程技术网

Php 类似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。只有在可能有另一

我想创建一个类似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。只有在可能有另一个新帖子时,数据才会插入此表中。每次用户看到某些内容时,我都会从该表中删除特定条目

然而,我真的搞不清楚,我的这种方法(包括DB设计)是否是某种“错误”或“过于复杂”的方式 我想不出实现这一点的方法,因为我想不出一种逻辑方法,即何时以及如何将数据插入
notification\u unread
。例如,我不想通知自己,在我发了一篇新帖子之后,我发了一篇新帖子。但我想我还是要在表中插入数据

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


我希望你能跟随我,并将非常感谢任何建议

乍一看,这似乎是一个非常简单、干净的解决方案,但后来就失败了。 正如波迪卢斯卡所指出的,最好有一个检查区

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


您可能需要创建一个归档表,以便将旧通知移动到归档表中。这里重要的事情是维护通知表,因为所有的更新都在这里。它变得越大,对性能的影响就越大。这是一个很长的时间效应,但是现在你可能想考虑这个解决方案,而不是以后。

我对这个思想过程感到好奇,它让你认为两个表比一个字段有一个读或不读的通知表要好,因为读过的消息是一个与已经创建的消息不同的事实。