Mysql
 sql >> база данни >  >> RDS >> Mysql

Система за съобщения в php mysql

Мисля, че можете да запазите текущата си структура на таблицата за съдържанието на съобщението. Вместо да добавяте отделни колони или изтрити флагове, по-добре е да имате отделна таблица за пощенски кутии.

Така че вашата текуща таблица mbox:

id   message    sentby   sentto    created

След това друга таблица за потребителски_пощенски кутии

id   user    mailbox    message_id

Ще трябва да направите общо три вмъквания, когато пишете съобщение, едно в таблицата със съобщения, за всеки потребител в таблицата user_mailboxes.

Така че вашите mbox данни изглеждат така:

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

И данните за user_mailboxes ще изглеждат така:

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

Това ви позволява да изтривате отделни редове за таблицата user_mailboxes. Това също би позволило бъдещи добавки, като ви позволява да изпращате съобщения до множество потребители едновременно (Нов ред за всеки потребител) и ви позволява да добавите повече от една пощенска кутия, ако е необходимо (Входящи, Излизащи, Кошче, Важно и др.).

За да търсите пощата за потребител за конкретна пощенска кутия, просто трябва да използвате присъединяване

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

Ще ви е необходим скрипт за почистване, докато изтривате, за да сте сигурни, че няма остарели съобщения, които не съществуват в таблицата 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. MySQL Най-добрите N резултати с Join Tables

  2. Създайте таблица в по sql израз с помощта на executeUpdate в Mysql

  3. Правилно боравене с дълги данни в Hibernate

  4. Как да коригирам двойно кодирани UTF-8 низове, които се намират в полетата utf8_general_ci на MySQL?

  5. ВМЕСТЕ В... ИЗБЕРЕТЕ ОТ ... ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ