通知系统的数据库模式与Facebook类似

时间:2013-02-21 22:47:34

标签: database-design notifications

我正在尝试设计类似于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以获取数据的世界。

有人对我有任何建议吗?

1 个答案:

答案 0 :(得分:29)

以下是我最终解决此问题的方法。

Notifications Schema

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