मुझे लगता है कि आप संदेश सामग्री के लिए अपनी वर्तमान तालिका संरचना रख सकते हैं। अलग-अलग कॉलम या हटाए गए फ़्लैग जोड़ने के बजाय, मेलबॉक्स के लिए एक अलग टेबल रखना आपके लिए बेहतर होगा।
तो आपकी वर्तमान एमबॉक्स तालिका:
id message sentby sentto created
फिर user_mailboxes के लिए एक और टेबल
id user mailbox message_id
उपयोगकर्ता_मेलबॉक्स तालिका में प्रत्येक उपयोगकर्ता के लिए संदेश लिखते समय आपको कुल तीन प्रविष्टियां करनी होंगी, संदेश तालिका में एक, चालू।
तो आपका एमबॉक्स डेटा इस तरह दिखता है:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
और user_mailboxes डेटा इस तरह दिखेगा:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
यह आपको user_mailboxes तालिका के लिए अलग-अलग पंक्तियों को हटाने की अनुमति देता है। यह आपको एक ही समय में एकाधिक उपयोगकर्ताओं को संदेश भेजने की अनुमति देकर भविष्य के ऐड-ऑन की भी अनुमति देगा (प्रत्येक उपयोगकर्ता के लिए एक नई पंक्ति), और यदि आवश्यक हो तो आपको एक से अधिक मेलबॉक्स जोड़ने की अनुमति देता है (इन, आउट, ट्रैश, महत्वपूर्ण , आदि)।
किसी विशेष मेलबॉक्स के लिए उपयोगकर्ता के लिए मेल देखने के लिए, आपको बस एक जॉइन का उपयोग करना होगा
SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";
जब आप हटाते हैं तो आपको एक क्लीन अप स्क्रिप्ट की आवश्यकता होगी ताकि यह सुनिश्चित किया जा सके कि कोई भी अनाथ संदेश मौजूद नहीं है जो user_mailboxes तालिका में मौजूद नहीं है।