Navrhoval bych mít alespoň následující:
Uživatelé, vlákna, zprávy
- Všechny zprávy budou mít vlákno
- cizí klíč:thread_id
- Všechna vlákna by měla mít alespoň jednu zprávu a alespoň jednoho příjemce (a také odesílatele)
- cizí klíč:to_user_id, from_user_id, message_id
Odtud byste mohli svému vláknu jednoduše přiřadit několik příznaků (to_user_deleted, from_user_deleted), které by byly odpovídajícím způsobem aktualizovány.
Samozřejmě je třeba zvážit mnohem více věcí, například jaké druhy věcí chcete zohlednit. Například:
- Chcete zobrazit aktuální zprávu na rozdíl od úvodní zprávy?
- Chcete uživatelům umožnit označovat jednotlivé zprávy jako přečtené, nebo jen vlákna?
To vše musíte vzít v úvahu při navrhování databáze.