sql >> Databasteknik >  >> RDS >> Mysql

Meddelandesystem i php mysql

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.



  1. Hur REGEXP_INSTR() fungerar i MariaDB

  2. Hur exekverar jag en PHP-fråga på valt alternativ med AJAX?

  3. gå med i två olika tabellers kolumn sqlite3

  4. Escape Character i SQL Server