Ik denk dat je je huidige tabelstructuur voor de berichtinhoud kunt behouden. In plaats van aparte kolommen of verwijderde vlaggen toe te voegen, kunt u beter een aparte tabel voor mailboxen hebben.
Dus je huidige mbox-tafel:
id message sentby sentto created
Dan nog een tabel voor user_mailboxes
id user mailbox message_id
U zou in totaal drie invoegingen moeten doen bij het schrijven van een bericht, één naar de berichtentabel, voor elke gebruiker in de user_mailboxes-tabel.
Dus je mbox-gegevens zien er als volgt uit:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
En user_mailboxes-gegevens zien er als volgt uit:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
Hiermee kunt u afzonderlijke rijen voor de tabel user_mailboxes verwijderen. Dit zou ook toekomstige add-ons mogelijk maken doordat u berichten naar meerdere gebruikers tegelijkertijd kunt verzenden (een nieuwe rij voor elke gebruiker), en u kunt indien nodig meer dan één mailbox toevoegen (In, Out, Trash, Important , enz.).
Om de e-mail van een gebruiker voor een bepaalde mailbox op te zoeken, gebruikt u gewoon een join
SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";
U hebt een opschoonscript nodig terwijl u verwijdert om er zeker van te zijn dat er geen zwevende berichten zijn die niet bestaan in de tabel user_mailboxes.