メッセージを表示する権限を持つユーザーを格納するメッセージのルックアップテーブルを使用します
table->message | table->messageUsers
id->0, message->'hi', user_id->1 user_id->1, message_id->0
user_id->2, message_id->0
そうすれば、ユーザーがメッセージを削除した場合、実際にはメッセージ自体ではなく、メッセージとの関係を削除しているだけです。 messageUsersテーブルからそれらを削除するだけです。または、アクティブフィールドを1または0に設定します。