【问题标题】:Database Schema For Notification System Similar to Facebooks类似于 Facebook 的通知系统的数据库架构
【发布时间】:2013-02-21 22:47:33
【问题描述】:

我正在尝试设计一个类似于 facebook 的通知系统,但我遇到了一些困难。我的要求是能够支持无限数量的通知类型,这些通知类型可能需要呈现不同类型的元数据。

我在想我会按如下方式设计架构:

**Notification**
Id (int)
TypeId (int)
RecipientId (int)
SenderId (int)
SendDateTime (DateTime)
Read (bool)
MessageData (...Blob?)
Deleted (bool)

**NotificationType**
Id
Name
Description

我真的很想尽量避免在我的数据库中存储 HTML 字符串,但是,我也不是特别喜欢存储 blob。

我可以查找 NotificationType 表并引用另一个存储特定于该类型的数据的表,但是,这意味着每次我创建一个新的 notificationtype 时,我都需要创建一个新表.我相信我也会让自己进入一个必须编写动态 SQL 才能获取数据的世界。

有人对我有什么建议吗?

【问题讨论】:

  • 我正在解决同样的问题。我和你有类似的结构,但使用了 html 路线。在描述列中,我有类似 的内容。然后我通过 user_id 查询通知并使用 JavaScript 根据 span id 填充消息。
  • @mcottingham 我正在处理同样的问题,我想过做类似的事情,只将它存储为 XML,但它看起来不正确......我希望我可以看看看看FB是怎么做到的..

标签: database-design notifications


【解决方案1】:

这就是我最终解决这个问题的方法。

我决定使用字典来存储每种通知类型独有的数据。然后我将该字典对象序列化为二进制字符串,并将其与每个通知一起存储在数据库中。我有一个模板分配给每个包含占位符的通知类型,即。 '{song-title}' 我可以用我的字典对象中的值快速替换。

【讨论】:

  • 你解决了“用户删除了一些内容,我必须删除所有相关的通知”的问题吗?
  • 我确实为我的一个应用程序做了类似的事情。但是删除用户是软删除,这意味着不需要删除任何内容。
  • 您可以使用 readAt 并使用日期/时间,而不是 bool 来表示“Read”。与删除相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
相关资源
最近更新 更多