4

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

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

我的问题是:

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

谢谢!

4

3 回答 3

2

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

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

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

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

这样你就必须只保存一个通知,这使得修改/编辑通知变得更容易

于 2013-11-13T09:21:05.680 回答
0

是的..你可以这样做..示例:假设任何用户“PQP”(user_id = 1)正在添加照片,那么你必须编写关于照片添加查询成功的通知查询(你需要编写写查询用于在您希望将该点作为通知的任何地方的代码通知),因此您的通知表将获得新条目

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

因此,在这种情况下,每当有人上传照片时,通知表就会进入其中。

于 2013-11-13T09:26:58.937 回答
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 视为未读,除非日志表包含该用户的 event_id

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

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

于 2013-11-13T09:50:39.817 回答