В настоящее время я разрабатываю систему PM для веб-сайта, на которой пользователи должны иметь возможность отправлять PM нескольким получателям. Естественно, это означает, что, если сообщение было отправлено пользователям A, B и C, пользователь C может удалить сообщение, а пользователи A и B - нет.
Вопрос в том, какова будет лучшая структура таблицы базы данных для такой системы, конечно же, избегая нескольких копий одного сообщения.
В настоящее время я думал об этой структуре таблицы:
msgid (int),
parentid (int),
timestamp (timestamp),
senderid (int),
recipients (varchar),
subject (varchar)
text (text),
deletedby (varchar),
readby (varchar)
Это будет единственная таблица. Потоки создаются на основе парентид (если парентид нет, сообщение является первым в цепочке) и упорядочиваются по метке времени. Получатели хранятся в одном столбце через запятую и проверяются с помощью WHERE userid IN (msg.recipients). Столбец deleteby содержит все идентификаторы (через запятую) пользователей, которые удалили сообщение, так же, как и столбец readby.
Однако я не уверен, что это идеальная структура таблицы. Прежде чем я начну кодировать, я хотел бы услышать ваши мысли по улучшению.