Предлагам поне следното:
Потребители, нишки, съобщения
- Всички съобщения ще имат нишка
- чужд ключ:thread_id
- Всички нишки ще имат поне едно съобщение и поне един получател (както и подател)
- чужд ключ:to_user_id, from_user_id, message_id
Оттам можете просто да зададете няколко флага на вашата нишка (to_user_deleted, from_user_deleted), които ще бъдат актуализирани съответно.
Има много повече неща, които трябва да имате предвид, разбира се, като например какви неща искате да отчетете. Например:
- Искате ли да покажете текущото съобщение вместо началното?
- Искате ли да позволите на потребителите да маркират отделни съобщения като прочетени или само нишки?
Трябва да вземете предвид всичко това, докато проектирате вашата база данни.