Sugerowałbym przynajmniej:
Użytkownicy, wątki, wiadomości
- Wszystkie wiadomości miałyby wątek
- klucz obcy:identyfikator_wątku
- Wszystkie wątki miałyby co najmniej jedną wiadomość i co najmniej jednego odbiorcę (oraz nadawcę)
- klucz obcy:to_user_id, from_user_id, message_id
Stamtąd możesz po prostu przypisać kilka flag do swojego wątku (to_user_deleted, from_user_deleted), które zostaną odpowiednio zaktualizowane.
Oczywiście jest o wiele więcej rzeczy do rozważenia, na przykład, jakie rzeczy chcesz uwzględnić. Na przykład:
- Czy chcesz wyświetlić bieżącą wiadomość, a nie wiadomość początkową?
- Czy chcesz zezwolić użytkownikom na oznaczanie pojedynczych wiadomości jako przeczytanych, czy tylko wątków?
Musisz wziąć to wszystko pod uwagę podczas projektowania bazy danych.