Neb*_*ron 7 database notifications storage database-design facebook
我刚刚阅读了同一主题的以下帖子:
Facebook喜欢通知跟踪(数据库设计)和 数据库设计来向用户存储通知
提供了一些解决方案,但不完全是我需要的,以及它应该如何用于类似Facebook的通知系统.
在通知中,我们经常会有一些链接指向采取某些操作的用户,链接到他评论的帖子或视频,链接到任何内容,并且我们在单个通知中有几个链接.
notification
-----------------
id (pk)
userid
notification_type
notification_text
timestamp
last_read
Run Code Online (Sandbox Code Playgroud)
使用此表结构,我们可以显示单个用户的所有通知,这是非常可靠的解决方案.但在这种情况下,我们只能显示纯文本通知.我们不能简单地链接到用户或墙上的帖子.
我正试图找到解决这个问题的方法.一种是在notification_text属性中存储BB代码,但是您需要为Web和移动应用程序编写BB代码解析器.另一个是创建另一个表,该表派生自此通知表,其ID为我们需要的实体.一个例子:
PostCommentNotification : Notification
----------------------------------------
id
userId (user who commented on a wall post)
postId (post where comment was made)
Run Code Online (Sandbox Code Playgroud)
现在我们可以编写一个模板来显示通知(我们现在不再需要通知表中的text属性),然后处理显示它.我对此解决方案不满意,因为从通知表派生的表的数量可能很大(对于每种通知类型).
我正在寻找想法!:)
不幸的是,这里没有很多答案.我有同样的问题,没有找到任何好的解决方案.数据库中的继承总是很棘手,而且复杂得太快.所以我最终得到了一个简单的解决方案:在"数据"列中存储包含在JSON中的关键值资源数组.
像这样的东西:
notification
-----------------
id (pk)
userid
notification_type
notification_data
timestamp
last_read
Run Code Online (Sandbox Code Playgroud)
例如,对于评论通知,您将进行存储
[{"author_id": "1234", "comment_id":"1234"}]
Run Code Online (Sandbox Code Playgroud)
然后使用notification_type在客户端正确格式化数据.
看不到任何缺点,因为我们只需要客户端上的资源id来创建URL或意图,索引的原子字段是无用的.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5232 次 |
| 最近记录: |