powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения на сайте
24 сообщений из 24, страница 1 из 1
Персональные сообщения на сайте
    #37616025
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость реализовать систему обмена сообщениями между пользователями сайта. У меня получилась такая таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
PrivateMessages(
ID int primary key,
FromID int,
ToID int,
Title nvarchar(100),
Body nvarchar(max),
AddedDate datetime,
ReadOn datetime
)



Но как сделать так, чтобы сообщения между 2-мя пользователями группировались? То есть, если я послал письмо пользователю, он ответил, а я ответил на его ответ - то это должно быть в рамках одной переписки.


sql server 2008 r2
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616044
шел   мимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Darooma,

посмотрите, как это сделано для e-mail.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616050
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шел мимо,

как это сделано?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616082
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daroomaон ответил, а я ответил на его ответНужно ли отличать именно "ответы" от просто сообщений?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616149
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616157
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это должно быть в рамках одной переписки
Если я пишу сообщение этому пользователю, то я могу как начать новую переписку по новой теме, так и продолжить уже начатую.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616176
шел   мимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шел мимоDarooma,

посмотрите, как это сделано для e-mail.

Посмотрите. В чем проблема?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616224
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daroomaэто должно быть в рамках одной переписки
Если я пишу сообщение этому пользователю, то я могу как начать новую переписку по новой теме, так и продолжить уже начатую.Сами пользователи в состоянии это различить? Причем как на этапе действия (есть две отдельных кнопки "Новое сообщение" и "Ответить"), так и на этапе чтения принятых сообщений? И пользователи готовы этим правильно пользоваться, а не жать всегда "Ответить" (как это частенько происходит в электронной почте) ?
Если да, то заведите еще одно поле "в ответ на ..." со ссылкой на то сообщение, ответом на которое является текущее сообщения.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616352
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot miksoft]Darooma"в ответ на ..." со ссылкой на то сообщение, ответом на которое является текущее сообщения.
То есть поле ParentID. Вариант. Но я решил сделать 2 таблицы


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
PrivateMessageThread(

ID int primary key,
FromID int,
ToID int,
Title nvarhcar(100),
AddedOn datetime,
Body nvarchar(max),
ReadOn datetime NULL,
DeletedOn datetime NULL,
EditedOn datetime NULL
)

и 

PrivateMessage(

ID int primary key,
PrivateMessageThreadID int,
FromID int,
ToID int,
AddedOn datetime,
Body nvarchar(max),
ReadOn datetime NULL,
DeletedOn datetime NULL,
EditedOn datetime NULL
)



Так вроде?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616354
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шел мимошел мимоDarooma,

посмотрите, как это сделано для e-mail.

Посмотрите. В чем проблема?
Каким образом и где?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616440
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Darooma,

А зачем вообще какие-либо поля в таблице PrivateMessageThread кроме ID ?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616475
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
можно их убрать. Но title по-любому должен быть общим, то есть его нужно оставить.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616478
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавляем в таблицу поле
MessageID
если оно =0, то это базовое сообщение
если >0, то ответ на сообщение ID которого = MessageID
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616484
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Daroomaшел мимопропущено...


Посмотрите. В чем проблема?
Каким образом и где?
Просмотрите исходник любого письма, пришедшего «в ответ на…».
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616574
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaroomaНо title по-любому должен быть общим, то есть его нужно оставить.Зачем? Чем не устраивает title первого сообщения в переписке?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616772
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

тем, что этот title будет использоваться только один раз для каждой новой переписки. Поместить его PrivateMessageThread более логично и никаких усилий сверх не требует.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616776
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
PrivateMessageThread(
ID int primary key 
Title nvarhcar(100)
)

и 

PrivateMessage(

ID int primary key,
PrivateMessageThreadID int,
FromID int,
ToID int,
AddedOn datetime,
Body nvarchar(max),
ReadOn datetime NULL,
DeletedOn datetime NULL,
EditedOn datetime NULL
)
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616839
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daroomamiksoft,

тем, что этот title будет использоваться только один раз для каждой новой переписки. Поместить его PrivateMessageThread более логично и никаких усилий сверх не требует.Это будет либо дублирование данных (если title переписки берется из первого сообщения в этой переписке), либо дополнительный труд пользователю (если заставить его вводить отдельный заголовок переписки).

Если не нравится мой совет со ссылкой на предыдущее сообщение, можно хранить ссылку на первое сообщение в треде. Тогда получится практически та же система, как пытаетесь придумать вы, но только из одной таблицы.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616904
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

я не хочу заморачиваться с рекурсивной выборкой. Мой вариант правильный?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37616980
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Daroomamiksoft,

я не хочу заморачиваться с рекурсивной выборкой. Мой вариант правильный?Мой второй вариант не дает рекурсивной выборки. Ваш вариант избыточен, хотя с ним тоже можно жить.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37617203
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftDaroomamiksoft,

тем, что этот title будет использоваться только один раз для каждой новой переписки. Поместить его PrivateMessageThread более логично и никаких усилий сверх не требует.Это будет либо дублирование данных (если title переписки берется из первого сообщения в этой переписке), либо дополнительный труд пользователю (если заставить его вводить отдельный заголовок переписки).

Если не нравится мой совет со ссылкой на предыдущее сообщение, можно хранить ссылку на первое сообщение в треде. Тогда получится практически та же система, как пытаетесь придумать вы, но только из одной таблицы.
В таблице PrivateMessage нет поля Title, дублирования данных по нему не будет.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37620913
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaroomaВ таблице PrivateMessage нет поля Title, дублирования данных по нему не будет.Да, я пропустил, что в новой версии это поле перенесено в другую таблицу.
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37620966
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а что, пользователям нельзя будет выбирать на какое именно сообщение в пределах переписки они отвечают? Если в дискуссии разовьется несколько параллельных веток, то как в них ориентироваться?
...
Рейтинг: 0 / 0
Персональные сообщения на сайте
    #37621316
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

это маловероятно. Это ведь личные сообщения, а не форум. А если и разовьется, то можно вставлять цитату. Там ведь всего 2 человека общаться будут, не запутаются.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения на сайте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]