如何使用已读/未读标志对用户进行通知?

时间:2013-11-13 09:15:08

标签: php mysql design-patterns database-design notifications

我正在制作通知系统,以便当组中的用户执行操作时,它将通知该组中的所有其他用户。我希望为该组的每个用户将通知标记为“已读”或“未读”。有了这个,我可以轻松地检索用户的任何未读通知并显示它。我考虑创建一个包含以下字段的通知表。

+----------------------+
| notification         |
+----------------------+
| id                   |
| userid               |
| content              |
| status (read/unread) |
| time                 |
+----------------------+

我的问题是:

  1. 这是否是制作系统的正确方法?因为这意味着当一个组中有1,000个用户时,我必须向表中插入1,000行。如果没有,那么更好的方法是什么?
  2. 如果是这样做的话,怎样才能编写php / mysql代码来循环插入行?
  3. 谢谢!

3 个答案:

答案 0 :(得分:1)

更好的方法是通过执行以下操作将通知与用户分开:

Table Notification
------------------
not_id
time content

Table User
----------
u_id

Table NotificationStatus
------------------------
id
u_id
not_id
bool read

这样您就必须将每个通知只保存一个,这样可以更容易地修改/编辑通知

答案 1 :(得分:0)

是的......我可以这样做.. 例如:假设任何用户“PQP”(user_id = 1)正在添加照片,那么你必须在照片添加查询成功时写下你的通知查询(你需要在代码的任何地方写通知写入查询,无论你想要那个点作为通知)所以你的通知表将获得新的条目

id = 1                
userid =1           
content = "Photo Added By User PQP"            
status = Unread
time = currenttime

所以在这种情况下,whenevr some1将上传照片,然后通知表将进入其中..

答案 2 :(得分:0)

考虑以下数据结构:

Table: Events
----------------
event_id
user_id (foreign key to users table)
action_id (foreign key to actions table)
time_stamp

Table: Log
----------------
user_id (foreign key to users table)
event_id (foreign key to events table)
time_stamp

逻辑应该是用户X认为所有事件都未读,除非Log表包含该用户的event_id

动作表可能有多种类型的动作。

您将能够通过查询日志来计算并通知所有用户有多少其他用户已“收到”该操作。等等” ...