sql >> Database >  >> RDS >> Mysql

Berichtensysteem in php mysql

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.



  1. De MyRocks Storage Engine gebruiken met MariaDB Server

  2. Gegevens verwijderen uit alle tabellen in MYSQL

  3. MariaDB JSON_TABLE() uitgelegd

  4. Update uw PostgreSQL-wachtwoord in Linux