|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|
Диалоги между пользователями07.02.2014, 12:33. Показов 12771. Ответов 58
Добрый день. Помогите пожалуйста решить логическую задачу. У себя пытаюсь реализовать что-то наподобие диалогов между пользователями. Примерно как вконтакте. Итак, сделал две таблицы. Одну для диалогов, другую для сообщений. Таблица для сообщений, представлена на рисунке. Вопрос. Как построить таблицу для диалогов? Какие поля там должны быть?
0
|
|
| 07.02.2014, 12:33 | |
|
Ответы с готовыми решениями:
58
Перевод между пользователями
Передача данных между БД с разными пользователями |
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|
| 07.02.2014, 12:40 [ТС] | |
|
Был когда то такой вариант таблицы для диалогово(на рисунке). При выборке данных, я смотрел, имеются ли у меня активные диалоги с тем или иным пользователем. Затем, если что-то находилось, то выводил сообщения на страницу. Мой недочёт был в следующем. При удалении диалога, я ставил flag диалога в положение '0' и затем, удалял из таблицы все сообщения с этого диалога. А потом смекнул, что сообщений может быть очень много и подобные операции будут постоянной нагрузкой для сервера. И вот, теперь.. Я не знаю что делать и как быть.
0
|
|
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 13:13 | |
|
Как по мне в таблице сообщения поля id-отправителя и получателя не нужны(это должны быть атрибуты диалогов), а поля dialog_id не хватает.
1
|
|
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
||
| 08.02.2014, 13:59 [ТС] | ||
0
|
||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 14:13 | |
|
При удалении диалога с id=x, удаляются сообщения с dialog_id=x или вы о чем?
0
|
|
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
||
| 08.02.2014, 14:22 [ТС] | ||
0
|
||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 14:39 | |
|
почему тогда просто не проверять, если у диалога поле deleted=1, то не показывать, если у вас все от диалога пляшет?
Вы же выбираете для пользователя сначала диалоги, а потом сообщения связанных с этим диалогом(естественно "потом" - это образно, все делается одним запросом).
0
|
|
|
|
|
| 08.02.2014, 14:54 | |
|
Есть вариант:
таблица диалога: id, messages ид находятся в таблицах обоих собеседников. messages хранит все диалоги в json-формате. например [{id:1,answer:"a-la-la",question:"bla-bla-bla"},{...},{...}] Одна запись используется для обоих пользователей. Осталось реализовать извлечение и запись данных в это поле (что очень несложно).
1
|
|
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
||
| 08.02.2014, 15:08 | ||
|
dialogs: id user_from_id user_to_id deleted messages: id dialog_from_id dialog_to_id text deleted
1
|
||
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|||
| 08.02.2014, 15:18 [ТС] | |||
0
|
|||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 15:23 | |
|
1
|
|
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|||||||
| 08.02.2014, 15:30 [ТС] | |||||||
Пример так:
0
|
|||||||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
||||||
| 08.02.2014, 15:42 | ||||||
|
Да, только пару моментов, во-первых поле deleted означает удален, поэтому для активных диалогов оно должно быть равным 0, а не 1(если в таблице значение этого поля по умолчанию поставить 0, то при создании диалогов его вообще упоминать не придется),
во-вторых имена полей подберите верней, они должны быть "говорящими", а то по полю `my_id`, можно подумать, что у вас диалоги не все со всеми, а только вы со всеми, я бы сделал так:
1
|
||||||
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
||
| 08.02.2014, 16:00 [ТС] | ||
Добавлено через 7 минут Почему у вас в dialogs, нет поля dialog_id?
0
|
||
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 08.02.2014, 16:07 | ||
|
а чем не устраивает эта структура? Хранение друзей в базе данных mysql Все тоже самое, добавить только текстовое поле, и все...
Добавлено через 33 секунды
1
|
||
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|||||||
| 08.02.2014, 16:13 [ТС] | |||||||
0
|
|||||||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 16:17 | |
|
Зачем генерировать? Для того и нужен auto_increment, чтоб записи вставлялись с уникальным идентификатором.
1
|
|
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
||
| 08.02.2014, 16:37 [ТС] | ||
Добавлено через 14 минут Хм. Сразу возникает ещё один вопрос. Скажем, в таблице у меня имеется мой удалённый диалог и активный диалог пользователя. Я пишу ему новое сообщение. Что должно происходить с мои диалогом? И диалогом пользователя? Добавлено через 2 минуты Почему спрашиваю? Если id имеющихся диалогов у нас не обновляются, то как я скрою от себя удаленные сообщения? Ведь по идее, если deleted снова станет в положение 0, то я снова увижу свои старые сообщения. А я их видеть не должен.
0
|
||
|
71 / 71 / 13
Регистрация: 01.09.2011
Сообщений: 379
|
|
| 08.02.2014, 16:48 | |
|
Я же писал вроде, что после возобновления диалога вы создаете новый диалог для себя, для собеседника продолжаете писать в его старый диалог(он же свой не удалил), почему он снова станет deleted = 0, следите за тем, чтобы не стал, или удаляйте полностью из таблицы, если вам не нужна возможность восстанавливать старые или создайте еще одну таблицу archive_dialogs куда помещайте удаленные - вариантов много, смотря какие конкретно у вас потребности?
1
|
|
|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
||
| 08.02.2014, 16:52 [ТС] | ||
0
|
||
| 08.02.2014, 16:52 | |
|
Помогаю со студенческими работами здесь
20
Общение в виде чата между пользователями на сайте Работа с пользователями Слежка за пользователями Контроль над пользователями. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|