Каков принцип хранения сообщений в переписке?
Сообщение и адресаты.
При отправке сообщения одним адресатом другому или нескольким, создаются связи.
Пример для 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;