私は現在、ユーザーが複数の受信者にPMを送信できる必要があるWebサイト用のPMシステムを開発しています。当然、これは、メッセージがユーザーA、B、およびCに送信された場合、ユーザーCはメッセージを削除できますが、ユーザーAとBは削除しないことを意味します。問題は、そのようなシステムに最適なデータベーステーブル構造は何か、もちろん1つのメッセージの複数のコピーを回避することです。現在、私はこのテーブル構造について考えました:
msgid (int),
parentid (int),
timestamp (timestamp),
senderid (int),
recipients (varchar),
subject (varchar)
text (text),
deletedby (varchar),
readby (varchar)
これが唯一のテーブルになります。スレッドは、親IDに基づいて作成され(親IDがない場合は、メッセージがスレッドの最初になります)、タイムスタンプ順に並べられます。受信者は1つの列にコンマ区切りで保存され、WHEREユーザーID IN(msg.recipients)を使用してチェックされます。deleteby列には、readby列と同様に、メッセージを削除したユーザーのすべてのID(コンマ区切り)が含まれます。
ただし、これが理想的なテーブル構造であるかどうかはわかりません。コーディングを始める前に、改善のためのあなたの考えを聞きたいと思います。