J'utiliserais une table de recherche pour les messages qui stockeraient qui a le droit de voir ce message
table->message | table->messageUsers
id->0, message->'hi', user_id->1 user_id->1, message_id->0
user_id->2, message_id->0
De cette façon, si un utilisateur supprime son message, il supprime en fait sa relation avec le message et non le message lui-même. vous les supprimez simplement de la table messageUsers. ou définissez un champ actif sur 1 ou 0.