私は現在、ユーザーが複数の受信者にPMを送信できる必要があるWebサイト用のPMシステムを開発中です。当然ながら、これは、メッセージがユーザA、BおよびCに送信された場合、ユーザCはユーザAおよびBがメッセージを削除することができることを意味する。 問題は、もちろん、そのようなシステムのための最良のデータベーステーブル構造でしょう。もちろん、1つのメッセージの複数のコピーは避けてください。 は現在、私は、このテーブルの構造を考えた:複数の受取人テーブル構造を持つPHP/MySQL PMシステム?
msgid (int),
parentid (int),
timestamp (timestamp),
senderid (int),
receipients (varchar),
subject (varchar)
text (text),
deletedby (varchar),
readby (varchar)
これが唯一のテーブルになります。スレッドは、親子に基づいて作成されます(親子がない場合はスレッド内の最初のメッセージです)、タイムスタンプで順序付けられます。受信者はカンマ区切りで1列に格納され、WHERE userid IN(msg.receipients)を使用してチェックされます。 deletedby列には、readby列と同様に、メッセージを削除したユーザーのすべてのID(コンマ区切り)が含まれます。
しかし、これが理想的なテーブル構造であるかどうかはわかりません。コーディングを開始する前に、あなたの考えを聞きたいと思います。より良いアイデアがあれば教えてください。単一のフィールドにCSV値を格納する
おかげ
OKつまり、メッセージを持つテーブルと受信者ごとに行が挿入されるテーブルの2つのテーブルを用意することをお勧めします。 – carlo
はい。フィールドをカンマ区切りにしておくと、リストを変更する必要がある場合は非常に苦労します。 mysqlにはfind_in_set()があるので、検索はそれほど悪くはありませんが、他のDBシステムでは醜い速度になります。 csvから特定の値を削除することは、基盤となるシステムにかかわらず苦労します。 –
さて、ありがとう。スレッドシステムについてはどう思いますか?私の例の親子とタイムスタンプのオーダーモデルは大丈夫ですか? – carlo