2011-12-26 23 views
0

私はMYSQLを初めて使っています。私はメッセージモジュールで作業しています。私のテーブル構造はそれです。テーブル構造

メッセージ=> ID、メッセージ、

MessageUser => ID、MESSAGE_ID、receiver_id、SENDER_IDを作成したが、ユーザーに

ユーザー=> ID、ユーザ名、電子メール

SENDER_IDとreceiver_id仲間をis_read .idとmessage_idはMessage.idに関連付けられます

私の受信トレイのクエリを実行すると、条件を設定します(WHERE receiver_id = $ param)。 送信項目条件と同じです(WHERE sender_id = $ param)。私は私の受信トレイからメッセージを削除するか、私はUserMessageのテーブルの上に私の削除クエリを実行しbcozメッセージに

を送ったとき

そのfine.butワーキング問題がoccouredされます。

このメッセージが送信されたボックスから削除された場合、別のユーザーの受信ボックスからも削除されます。

私は2 soloutions

を持っています。他の列is_deleteを追加し、受信側または送信側からの削除に応じて値を設定します。

。 MessageUserテーブルを2つのテーブルに分割する Sender => id、message_id、sender_id; レシーバ=> id、message_id、receiver_id、is_read;

私にはより良いsolloutionがあります。送信者または受信者) ユーザーIDのPK

メッセージテーブルすることができます(

ユーザー表:ともfollwingを考慮)、高速

+0

リスト2:あなたが指定した要件を満たしていないため、オプション1が2つの列を追加する必要があります.1つはSender_Deleted、もう1つはReceiver_Deletedです。しかし、私は常に1センダと1レシーバがあると仮定しています.1センダと多くのレシーバが存在しますか? – xQbert

+0

はい1センダと複数レシーバがあります。 – Ahsan

答えて

0

オプション3をご返信ください事前 に別のsolloutionsくれ

感謝を伝えます(メッセージまたは応答) MessageID(PK) ParentMessageID(FK to self)

UserMessageテーブル< - このテーブルの削除処理を行います。すべての親メッセージ&の子メッセージに対して、すべてのuserMesageが削除済みとしてフラグが付けられるまで、メッセージはそのまま保持されます。 のSenderID ReceiverID メッセージID ステータス(削除、isRead、など)

0

IMHO、私はより良い方法が

列挙(送信者、受信者、両方)を入力して列を追加することだと思います。それはsenderを記憶している場合は、値は、それが受信機によってというように削除されているreceiverあるかどう

それは、送信者から削除されます。

関連する問題