我正在制作一个通知系统,以便当组中的用户执行操作时,它将通知组中的所有其他用户。我希望将组中的每个用户的通知标记为"已读"或"未读"。有了它,我可以轻松地检索用户的任何未读通知并显示它。我正在考虑创建一个具有以下字段的通知表。
+----------------------+
| notification |
+----------------------+
| id |
| userid |
| content |
| status (read/unread) |
| time |
+----------------------+
我的问题是:
- 是否是制作系统的正确方法?这意味着当一个组中有 1,000 个用户时,我必须在表中插入 1,000 行。如果没有,有什么更好的方法呢?
- 如果这是这样做的方法,我如何编写 php/mysql 代码来执行插入行的循环?
谢谢!
更好的方法是通过执行以下操作将通知与用户分开:
Table Notification
------------------
not_id
time content
Table User
----------
u_id
Table NotificationStatus
------------------------
id
u_id
not_id
bool read
这样,您只需保存每个通知一个,这使得修改/编辑通知更容易
考虑以下数据结构:
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
操作表可能具有多种类型的操作。
您将能够通过查询日志来计算并通知所有用户有多少其他用户"收到"了该操作。 等等'...
是的。你可以用这种方式做到这一点。示例:假设任何用户"PQP"(user_id=1)正在添加照片,那么您必须在照片添加查询成功时编写通知查询(您需要在您希望该点作为通知的任何地方为代码编写通知写入查询),因此您的通知表将获得新条目
id = 1
userid =1
content = "Photo Added By User PQP"
status = Unread
time = currenttime
因此,在这种情况下,每当有人上传照片时,通知表都会在其中输入。