sql >> Database teknologi >  >> RDS >> Mysql

Beskedsystem i php mysql

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.



  1. Under hvilke omstændigheder vil du have, at Rails skal indstilles til IKKE at genoprette forbindelse til MYSQL

  2. T-SQL:Hvordan bruger man parametre i dynamisk SQL?

  3. PHP MySql ukendt servervært

  4. Kan jeg fortryde ALTER-tabellen i - MySQL?