2

多くの Web サイトには、ユーザーからユーザーへメッセージを送信するという概念があります。別のユーザーにメッセージを送信すると、そのメッセージは受信トレイに表示されます。メッセージに応答すると、そのメッセージ スレッドに新しいエントリとして表示されます。

特定のメッセージを既に読んだかどうかを確認できる必要があり、新しい応答を受け取ったメッセージが一番上に表示されるはずです。

そのようなシステムをサポートするクラス (またはテーブルなど) をどのように設計しますか?

4

5 に答える 5

1

メッセージが 1 回だけ保存されるバルク メッセージをサポートするために、Owen のスキーマを拡張することをお勧めします。また、送信者が 1 つだけで、受信者が多数になるように変更されました (この方式では、送信者は 1 つしか存在しません)。

ユーザー
  ID
  名前

メッセージ
  ID
  受信者 ID
  content_id
  date_time_sent
  date_time_read
  response_to_message_id (これが返信する電子メールを参照します - スレッド)
  期限切れ
  重要性
  フラグ (読み取り、応答の読み取りなど)

コンテンツ
  ID
  message_id
  送信者 ID
  題名
  メッセージ

もちろん、他にも追加できる機能はたくさんありますが、ほとんどの人は「メール」と聞いて上記の機能を思い浮かべます。

-アダム

于 2008-09-23T21:02:15.800 に答える
1
user
 id
 name

messages
 id
 to_user_id
 from_user_id
 title
 date

message_post
 id
 message_id
 user_id
 message
 date

クラスはこの種のスキーマを反映します

于 2008-09-23T20:53:39.533 に答える
0

かなりシンプルなテーブル構造です。to/from、件名、そしてメッセージ。ここで重要なのは日付フィールドです。DateSent はメッセージがいつ送信されたかを示し、DateRead はメッセージが読まれたことを示し、DateDeletedTo は TO ユーザーがメッセージを削除したことを示し、DateDeletedFROM は FROM ユーザーがメッセージを削除したことを示します (これらはこの例の論理的な削除です)。

tblMessage
ID  BIGINT 
ToUserID GUID/BIGINT
FromUserID GUID/BIGINT
Subject NVARCHAR(150)
Message NVARCHAR(Max)
DateDeletedFrom DATETIME
DateDeletedTo DATETIME
DateSent DATETIME
DateRead DATETIME
于 2008-09-23T20:55:00.030 に答える
0

私は実際に、職場での内部開発の一環としてこれを行っています。[Messages] というテーブルを作成し、次の列を指定します。

  • mID(メッセージID)
  • from_user
  • to_user
  • メッセージ
  • 時間
  • tID (スレッド ID)
  • 読み取り (ブール値)

そのようなものがテーブルのデザインで機能するはずです。クラスは、設計しているシステムによって異なります。

于 2008-09-23T20:55:11.527 に答える
0
Table Message:
id INTEGER
recipient_id INTEGER -- FK to users table
sender_id INTEGER -- ditto
subject VARCHAR
body TEXT

Table Thread
parent_id -- FK to message table
child_id -- FK to message table

その後、Thread テーブルを調べて、メッセージのスレッドを取得できます。

于 2008-09-23T20:55:13.697 に答える