Jeg tror, du kan beholde din nuværende tabelstruktur for meddelelsesindholdet. I stedet for at tilføje separate kolonner eller slettede flag, ville du være bedre stillet med en separat tabel til postkasser.
Så din nuværende mbox-tabel:
id message sentby sentto created
Derefter en anden tabel for user_mailboxes
id user mailbox message_id
Du skal lave tre indsættelser i alt, når du skriver en meddelelse, en til meddelelsestabellen, til for hver bruger i tabellen user_mailboxes.
Så dine mbox-data ser således ud:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
Og user_mailboxes-data ville se sådan ud:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
Dette giver dig mulighed for at slette individuelle rækker for tabellen user_mailboxes. Dette vil også give mulighed for fremtidige tilføjelser ved at give dig mulighed for at sende beskeder til flere brugere på samme tid (en ny række for hver bruger), og give dig mulighed for at tilføje mere end én postkasse, hvis det er nødvendigt (In, Out, Trash, Vigtigt osv.).
For at slå e-mailen op for en bruger for en bestemt postkasse, skal du blot bruge en 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";
Du skal bruge et oprydningsscript, når du sletter, for at sikre dig, at der ikke er nogen forældreløse meddelelser, der ikke findes i user_mailboxes-tabellen.