Jag tror att du kan behålla din nuvarande tabellstruktur för meddelandeinnehållet. Istället för att lägga till separata kolumner eller borttagna flaggor är det bättre att ha en separat tabell för postlådor.
Så din nuvarande mbox-tabell:
id message sentby sentto created
Sedan en annan tabell för user_mailboxes
id user mailbox message_id
Du måste göra tre infogningar totalt när du skriver ett meddelande, ett till meddelandetabellen, på för varje användare i tabellen user_mailboxes.
Så din mbox-data ser ut så här:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
Och user_mailboxes-data skulle se ut så här:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
Detta låter dig ta bort enskilda rader för tabellen user_mailboxes. Detta skulle också möjliggöra framtida tillägg genom att du kan skicka meddelanden till flera användare samtidigt (En ny rad för varje användare) och tillåta dig att lägga till mer än en postlåda om det behövs (In, Ut, Papperskorgen, Viktigt osv.).
För att slå upp e-postmeddelandet för en användare för en viss postlåda, använder du bara en gå med
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 skulle behöva ett rensningsskript när du raderar för att se till att det inte finns några föräldralösa meddelanden som inte finns i tabellen user_mailboxes.