sql >> Databáze >  >> RDS >> Mysql

Systém zasílání zpráv v php mysql

Myslím, že si můžete ponechat svou současnou strukturu tabulky pro obsah zprávy. Spíše než přidávání samostatných sloupců nebo odstraňovaných příznaků by bylo lepší mít samostatnou tabulku pro poštovní schránky.

Takže vaše aktuální tabulka mbox:

id   message    sentby   sentto    created

Pak další tabulka pro user_mailboxes

id   user    mailbox    message_id

Při psaní zprávy byste museli provést celkem tři vložení zprávy, jedno do tabulky zpráv, pro každého uživatele v tabulce user_mailboxes.

Vaše data mbox tedy vypadají takto:

id   message     sentby    sentto    created 
1    Hi There    UserA     UserB     2015-01-26
2    Hello Back  UserB     UserA     2015-01-26

A data user_mailboxes by vypadala takto:

id   user        mailbox   message_id
1    UserA       Out       1
2    UserB       In        1
3    UserB       Out       2
4    UserA       In        2

To vám umožní odstranit jednotlivé řádky pro tabulku user_mailboxes. To by také umožnilo budoucí doplňky tím, že vám umožní posílat zprávy více uživatelům současně (nový řádek pro každého uživatele) a v případě potřeby vám umožní přidat více než jednu poštovní schránku (In, Out, Trash, Important , atd.).

Chcete-li vyhledat poštu pro uživatele pro konkrétní poštovní schránku, stačí použít 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";

Při odstraňování byste potřebovali čisticí skript, abyste se ujistili, že v tabulce user_mailboxes neexistují žádné osamocené zprávy.



  1. Kontingenční tabulka a zřetězení sloupců

  2. Bourejte zdi! Jak uvolnit vaše data

  3. před vložením zkontrolujte duplicitní data

  4. Jak zobrazit poslední dotazy provedené na MySQL?