【问题标题】:Database to track user notifications or activity (Facebook like)用于跟踪用户通知或活动的数据库(Facebook 之类的)
【发布时间】:2011-10-11 06:04:23
【问题描述】:

我刚刚阅读了关于同一主题的以下帖子:

Facebook like notifications tracking (DB Design)Database design to store notifications to users

提供了一些解决方案,但不完全是我所需要的,以及它应该如何用于类似 Facebook 的通知系统。

在通知中,我们经常有一些链接指向执行某些操作的用户、指向他评论过的帖子或视频的链接、指向任何内容的链接,并且通常我们在单个通知中包含多个链接。

notification
-----------------
id (pk)
userid
notification_type
notification_text
timestamp
last_read

通过这种表格结构,我们可以显示单个用户的所有通知,这是一个非常可靠的解决方案。但在这种情况下,我们只能显示纯文本通知。我们不能简单地链接到用户或墙帖。

我正在尝试解决这个问题。一种是将 BB 代码存储在 notification_text 属性中,但随后您需要为 Web 和移动应用程序编写 BB 代码解析器。另一个将创建另一个表,该表派生自该通知表,其中包含我们需要的实体的 ID。一个例子:

PostCommentNotification : Notification
----------------------------------------
id
userId (user who commented on a wall post)
postId (post where comment was made)

现在我们可以编写一个用于显示通知的模板(我们现在不再需要通知表中的 text 属性)然后处理显示它。我对这个解决方案也不满意,因为从通知表派生的表数量可能很大(对于每种通知类型)。

我正在寻找想法! :)

【问题讨论】:

    标签: database facebook database-design notifications storage


    【解决方案1】:

    不幸的是,这里没有很多答案。我有同样的问题,并没有找到任何好的解决方案。数据库中的继承总是很棘手,而且很快就会变得复杂。 所以我最终得到了一个简单的解决方案:将包装在 JSON 中的资源的键值数组存储在“数据”列中。

    类似这样的:

    notification
    -----------------
    id (pk)
    userid
    notification_type
    notification_data
    timestamp
    last_read
    

    例如,对于评论通知,您将存储

    [{"author_id": "1234", "comment_id":"1234"}]
    

    然后您使用 notification_type 在客户端正确格式化您的数据。

    看不到任何缺点,因为我们只需要客户端上的资源 id 来创建 url 或意图,索引的原子字段是无用的。

    希望这会有所帮助。

    【讨论】:

    • 你试过用javascript读取json数据吗?我没有,但我可以告诉您,当您使用 php 获取 json 数据时,它无法将 json 数据读取为 json 对象。 php 将其读取为字符串,无法将字符串解码为 json 数据。
    • 然后您使用 notification_type 在客户端正确格式化您的数据。看不到任何缺点,因为我们只需要客户端上的资源 id 来创建 url 或意图,索引的原子字段是无用的。希望这会有所帮助。
    猜你喜欢
    • 2020-01-04
    • 2010-12-29
    • 1970-01-01
    • 2013-11-10
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2013-09-13
    相关资源
    最近更新 更多