Каков принцип хранения сообщений в переписке?

Всем доброго времени суток.

Кто то подскажет каков принцип хранений сообщений в переписках. Например как в контакте.
Интересно именно следующее:
Два пользователя долго общались - общались. И потом один из них удалил всю переписку. Но при этом эта переписка осталась в полном объеме для второго пользователя. А для удалившего - продолжается с того места с которого он удалил.
Как это помечается?
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Сообщение и адресаты.
При отправке сообщения одним адресатом другому или нескольким, создаются связи.
Пример для 3-х собеседников, один из них отправил:
Сообщения:
сообщениеID->сообщениеТЕКСТ

Переписка (получатели сообщения):
сообщениеID -> адресат-отправитель
сообщениеID -> адресат-получатель1
сообщениеID -> адресат-получатель2
Если кто-то удалит сообщение(я), то удаляются только связи с адресатами.

Например, если удалил адресат-получатель1, тогда останется:
Сообщения:
сообщениеID->сообщениеТЕКСТ

Переписка (получатели сообщения):
сообщениеID -> адресат-отправитель
сообщениеID -> адресат-получатель2
Ответ написан
Комментировать
Я бы сделал так:
message_id int,
time datetime,
message_body varchar,
friend_id int,
flag_deleted bool,
flag_readed bool.

Ну, эт я в общем. Да ж не мускуль, а так.
Ну и когда обрабатываем на вывод из таблы, то забираем все с опущенным флагом flag_deleted
Типа вот так:
select * from messages_table where flag_deleted != 1;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы