Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sistema de mensagens em php mysql


Acho que você pode manter sua estrutura de tabela atual para o conteúdo da mensagem. Em vez de adicionar colunas separadas ou sinalizadores excluídos, seria melhor ter uma tabela separada para caixas de correio.

Então, sua tabela mbox atual:
id   message    sentby   sentto    created

Em seguida, outra tabela para user_mailboxes
id   user    mailbox    message_id

Você teria que fazer três inserções totais ao escrever uma mensagem, uma na tabela de mensagens, para cada usuário na tabela user_mailboxes.

Então seus dados mbox ficam assim:
id   message     sentby    sentto    created 
1    Hi There    UserA     UserB     2015-01-26
2    Hello Back  UserB     UserA     2015-01-26

E os dados user_mailboxes ficariam assim:
id   user        mailbox   message_id
1    UserA       Out       1
2    UserB       In        1
3    UserB       Out       2
4    UserA       In        2

Isso permite excluir linhas individuais da tabela user_mailboxes. Isso também permitiria futuros complementos, permitindo enviar mensagens para vários usuários ao mesmo tempo (uma nova linha para cada usuário) e adicionar mais de uma caixa de correio, se necessário (Entrada, Saída, Lixeira, Importante , etc).

Para procurar o e-mail de um usuário para uma caixa de correio específica, basta usar um 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";

Você precisaria de um script de limpeza ao excluir para garantir que não haja mensagens órfãs que não existam na tabela user_mailboxes.