2013-02-21 7 views
19

私はFacebookに似た通知システムを設計しようとしており、少し壁に達しています。私の要件は、レンダリングする必要のあるさまざまな種類のメタデータを持つ可能性のある無限の通知タイプをサポートできることです。通知システムのためのデータベーススキーマFacebookに似て

私は次のように私は、スキーマを設計することを考えています:

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

**NotificationType** 
Id 
Name 
Description 

私は本当にしかし、私はまた、いずれかのブロブを格納する特に好きではないよ、私のデータベース内のHTML文字列を格納避けるために試してみたいです。

NotificationTypeテーブルを参照し、そのタイプに固有のデータを格納する別のテーブルを参照することができますが、これは新しい通知タイプを作成するたびに新しい表。私は、データを取り出すために動的SQLを書かなければならない世界に自分自身を抱くことになると私は信じています。

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

+0

私はこの同じ問題に取り組んでいます。私はあなたと同様の構造を持っていますが、htmlルートを使いました。説明欄には、のようなものがあります。次に、私はuser_id経由で通知を照会し、JavaScriptを使用してスパンIDに基づいてメッセージを設定します。 –

+0

@mcottingham私は同じ種類の問題に取り組んでいますが、XMLと同様のものだけを保存することを考えましたが、正しくは見えません... FBがどのように行ったのか見てみるといいでしょう。 – formatc

答えて

26

ここで私はこの問題を解決しました。

Notifications Schema

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

+5

あなたは問題を解決しましたか?ユーザーはいくつかのコンテンツを削除しました。関連するすべてのnotofocationsを削除する必要がありますか? – Backs

関連する問題