Mysql
 sql >> Baza danych >  >> RDS >> Mysql

System wiadomości w php mysql

Myślę, że możesz zachować obecną strukturę tabeli dla treści wiadomości. Zamiast dodawać osobne kolumny lub usunięte flagi, lepiej mieć osobną tabelę dla skrzynek pocztowych.

Więc twoja obecna tabela mbox:

id   message    sentby   sentto    created

Następnie kolejna tabela dla skrzynek pocztowych użytkowników

id   user    mailbox    message_id

Podczas pisania wiadomości musiałbyś wykonać trzy wstawki, po jednym do tabeli wiadomości, dla każdego użytkownika w tabeli user_mailboxes.

Twoje dane mbox wyglądają więc tak:

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

A dane user_mailboxes wyglądają tak:

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

Pozwala to na usunięcie pojedynczych wierszy z tabeli user_mailboxes. Pozwoliłoby to również na przyszłe dodatki, umożliwiając wysyłanie wiadomości do wielu użytkowników jednocześnie (nowy wiersz dla każdego użytkownika) i umożliwiałoby dodanie więcej niż jednej skrzynki pocztowej w razie potrzeby (przychodzące, wychodzące, kosz, ważne itp.).

Aby wyszukać pocztę użytkownika w określonej skrzynce pocztowej, wystarczy użyć opcji dołączenia

SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";

Będziesz potrzebował skryptu czyszczącego podczas usuwania, aby upewnić się, że nie ma osieroconych wiadomości, które nie istnieją w tabeli user_mailboxes.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować PDO do mysqli?

  2. Jak obliczyć nachylenie w SQL

  3. AWS Aurora MySQL bezserwerowy:jak połączyć się z MySQL Workbench

  4. Mysql, przekształć dane z długich / wysokich na szerokie

  5. Jak wyszukiwać i zastępować wszystkie wystąpienia ciągu w bazie danych?