abler98
@abler98
Software Engineer

Структура БД диалогов: как построить?

Кто может помочь правильно построить структуру БД диалогов? Я хочу чтоб любой из собеседников мог "мягко" удалить диалог или сообщение, то есть если удаляет один собеседник, то у второго сообщение остается, а если удаляют оба, то сообщение безвозвратно удаляется, тоже самое с самими диалогами.
  • Вопрос задан
  • 3957 просмотров
Решения вопроса 1
WebSpider
@WebSpider
Можно сделать поле (например, deleted) с битовой маской
00b - видно всем
01b - удалил кто-то один (например, отправитель сообщения)
10b - удалил, соответственно, получатель сообщения
11b - удалили оба, можно удалять запись из базы (например, скриптом по крону, либо сразу проверять условие в момент удаления пользователем)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@NataliaCh
когда-то реализовывала простой обмен личными сообщениями на одном сайте.
обошлась одной таблицей. Работает уже три года. Записей на данный момент около 100 тысяч
Может мой вариант кому и пригодится.

структура таблицы:
mail_id
mail_userid_from - id отправителя
mail_userid_to - id получателя
mail_text - текст сообщения
mail_data - дата отправки
mail_status - прочитано или нет получателем - чтобы выводить количество непрочитанных сообщений
mail_delete_userfrom - удалено/нет отправителем
mail_delete_userto - удалено/нет получателем

последние два поля как раз отвечают за "мягкое удаление". По умолчанию там нули. Если юзер удалил сообщение, то выставляется 1 и сообщение данному юзеру не показывается. Теоретически, если в обоих полях по 1, то можно грохать из таблицы такие записи.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я бы хранил всю переписку во-первых, в одной ячейке, а во-вторых, тупо дублировал бы её. Это, конечно, расход места, но зато просто.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект