Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персональные сообщения на сайте / 24 сообщений из 24, страница 1 из 1
16.01.2012, 12:42
    #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
16.01.2012, 12:51
    #37616044
шел   мимо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения на сайте
Darooma,

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

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

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

Посмотрите. В чем проблема?
...
Рейтинг: 0 / 0
16.01.2012, 14:09
    #37616224
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения на сайте
Daroomaэто должно быть в рамках одной переписки
Если я пишу сообщение этому пользователю, то я могу как начать новую переписку по новой теме, так и продолжить уже начатую.Сами пользователи в состоянии это различить? Причем как на этапе действия (есть две отдельных кнопки "Новое сообщение" и "Ответить"), так и на этапе чтения принятых сообщений? И пользователи готовы этим правильно пользоваться, а не жать всегда "Ответить" (как это частенько происходит в электронной почте) ?
Если да, то заведите еще одно поле "в ответ на ..." со ссылкой на то сообщение, ответом на которое является текущее сообщения.
...
Рейтинг: 0 / 0
16.01.2012, 15:11
    #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
16.01.2012, 15:11
    #37616354
Darooma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения на сайте
шел мимошел мимоDarooma,

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

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

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


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

тем, что этот title будет использоваться только один раз для каждой новой переписки. Поместить его PrivateMessageThread более логично и никаких усилий сверх не требует.
...
Рейтинг: 0 / 0
16.01.2012, 17:46
    #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
16.01.2012, 18:06
    #37616839
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Персональные сообщения на сайте
Daroomamiksoft,

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

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

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

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

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

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

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


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