我正在尝试为我的社交网络创建一个通知系统。但我坚持数据库设计。因此,当一个用户对另一个用户发表评论时,我想显示“X 对您的帖子发表了评论”。或者当有人关注另一个人时我想显示通知。
这是我到目前为止的表格:
CREATE TABLE IF NOT EXISTS `notifications` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`notification_id` int(11) NOT NULL,
`text` text NOT NULL,
`read` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
我感到困惑的部分是,当有人关注另一个人时我应该插入一条记录吗?就像...当有人点击关注按钮后?如果是这样,我应该在该行中插入什么?
我正在使用 PHP 和 Laravel 框架。
最佳答案
由于这是一个开放式问题,没有完美的解决方案,因此我建议采用以下结构:
事件表
id type text
-----------------------------------------------
1 comment commented on your post
2 follow followed you
etc
那么通知表
将如下所示(我想不出更好的字段名称来传达这个想法):
通知表
id user_to_notify user_who_fired_event event_id seen_by_user
---------------------------------------------------------------------------
1 12 13 2 yes
2 13 12 1 no
3 1 15 1 yes
seen_by_user
可以是 bool 值。
使用上述结构的优点是您可以回答以下查询,而无需复杂的 SQL 查询:
- 用户 Y 对用户 X 帖子的评论总数。
- 用户阅读或点击通知的模式。例如,他不能点击关注他的人的通知。
- 如果用户选择不接收有关某些事件的通知,您可以根据
event_id
将其过滤掉。
一旦 X 对 Y 的帖子发表评论,您就会在通知表中创建一个条目,然后将评论添加到 评论表
中。我希望这能在某种程度上有所帮助!
关于php - 通知表设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437304/