|
42 / 42 / 13
Регистрация: 21.08.2011
Сообщений: 625
|
|
Диалоги между пользователями07.02.2014, 12:33. Показов 13378. Ответов 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
Общение в виде чата между пользователями на сайте Работа с пользователями Слежка за пользователями Контроль над пользователями. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|