39

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テーブルを検索して、そのタイプに固有のデータを格納する別のテーブルを参照することは可能ですが、新しい通知タイプを作成するたびに、新しいテーブルを作成する必要があります。また、データを取り出すために動的SQLを記述しなければならない世界に身を置くことになると思います。

誰かが私に何か提案がありますか?

4

1 に答える 1

49

これが私がこの問題を解決することになった方法です。

通知スキーマ

各通知タイプに固有のデータを格納するために辞書を使用することにしました。次に、その辞書オブジェクトをバイナリ文字列にシリアル化し、各通知とともにデータベースに保存します。プレースホルダーを含む各通知タイプにテンプレートが割り当てられています。'{song-title}'は、辞書オブジェクトの値にすばやく置き換えることができます。

于 2013-03-02T01:01:35.110 に答える