Здравствуйте. Помогите мне доделать личные сообщения пользователей. Сейчас у меня две таблицы mysql: message
id
title
text
type
sender_id
recipient_id
date
dialogs
id
sender_id
text
message_id
date
В первой таблице диалог, его название, описание, кто кому отправил. Во второй таблице у меня сообщения к диалогам.
Проблема в том, что я не могу понять, как сделать удаление сообщений и самих диалогов? Ведь если отправитель удалит свое сообщение, или диалог целиком, то и у получателя всего этого не будет. Как сделать в такой ситуации?
genochka: Если сообщений будет 40к - 50к - их пометка займет доли секунды, в то время, как удаление будет более дорогая операция как по времени, так и по ресурсам
Извиняюсь, но у меня вопрос по теме.
Обязательно ли две таблицы? Ведь можно из одной (первой) таблицы вытаскивать все сообщения между двумя пользователями и сортировать их по дате, а первое сообщение считать началом диалога.
Вряд ли в вашей ситуации нужно две таблицы. Для простой системы обмена сообщениями, достаточно одной таблицы (подразумевается, что таблицу списка зарегистрированных пользователей мы имеем, но не учитываем в обсуждении).
Но намного удобней, на мой взгляд, когда у пользователя отделены сообщения на диалоги, а не все собрано в одну кучу, в которой потом очень будет сложно разобраться.
Вы не волнуйтесь, все проще чем кажется на первый взгляд.
Используйте дополнительный столбец (поле) с именем, допустим, thread_id, и формируйте новый, либо задействуйте старый, в зависимости от того, что нажимает пользователь в вашем веб интерфейсе - "Написать новое сообщение", или "Ответить" ( либо придумайте другие названия). В зависимости от действия пользователя, вы будете выполнять ту или иную логику в программе. Тем более используя PHP, MySQL, вам будет легче (в каком то смысле) в данном случае работать с одной таблицей. Но я не настаиваю. ;-)