|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.09.2008, 11:46 | #1 |
Регистрация: 25.09.2008
Сообщений: 7
|
алгоритм для обмена сообщениями
Здравствуйте
Помогите в алгоритме для следующей задачи Нужно реализовать обмен сообщениями между зарегистрированными пользователями на php+mysql. Получил совет создать таблицу msg(id, from_user_id, to_user_id, text, date, parent_msg) Но я думаю это будет занимать слишком много процессорного времени и ресурсов оперативной памяти даже для того чтобы сформировать список между какими пользователями происходил диалог. Может есть способы пооптимизированнее? Заранее спасибо |
25.09.2008, 12:29 | #2 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
можно создать 3 таблицы.
1 таблица - пользователи - users id_user,user_name и тд 2 таблица - все сообщения - messages id_message,message_txt и тд 3 кросс таблица - cross id_cross, id_user_from, id_user_to, id_message При этом самая нагруженная таблица cross будет минимальна по размеру и постоянно в работе, что гарантирует её кеширование... Внешне кажется что это будет работать медленнее, но все релятивистские базы данных заточены под такую схему Быстродействие в большей степени зависит от оптимизации запросов к бд, пользуйтесь триггерами, функциями бд и будет быстродействие
Стрелок-охотник
Последний раз редактировалось mv28jam; 25.09.2008 в 12:39. Причина: - |
25.09.2008, 14:07 | #3 |
Регистрация: 25.09.2008
Сообщений: 7
|
расскажи про таблицу кросс если не затруднит
|
25.09.2008, 14:46 | #4 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Таблица кросс нужна для формирования свезей между id-идентификаторами, есть такие понятия как PK(primary key)первичный ключ и FK(foreign key)внешний ключ, кросс таблица хранит исключительно ключи FK, кроме своего PK(нужен только системе). FK - это PK в какой-то таблице. Поскольку ключи воосном integer и небольшого размера то их сравнение и кеширование не отнимает много ресурсов + поскольку вся информация о связях хранится в этой таблице и кней часто обращаются БД кеширует её. Это можно увидеть по времени выполнения запроса в phpmyadmin, повторно посланный запрос отработается быстрее.
Пример: у Вас есть группы пользователей причем один пользователь может состоять в нескольких группах делаем 3 таблицы 1)Группы с PK id_group 2)Пользователи с PK id_user 3)Кросс таблица, где мы пишем какой id_user "состоит" в группе id_group "столбцы" таблицы кросс(id_cross,id_user_cross,id_gro up_cross) id_user_cross,id_group_cross - это FK Так понятней?
Стрелок-охотник
Последний раз редактировалось mv28jam; 25.09.2008 в 14:49. Причина: - |
26.09.2008, 11:15 | #5 |
Регистрация: 25.09.2008
Сообщений: 7
|
Понятно. спасибо!
|
26.09.2008, 11:31 | #6 |
Регистрация: 25.09.2008
Сообщений: 7
|
подскажите как запрос
"select to_user_id from msg where from_user_id=5;" сделать таким чтобы он выбирал строки с уникальным to_user_id |
26.09.2008, 15:01 | #7 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
не понял...
to_user_id и так уникальное поле в таблице с юзерами, а в таблице msg может быть не одно сообщение в котором from_user_id=5, или имеется ввиду если запись одна? Вообщем задайте вопрос конкретнее.
Стрелок-охотник
|
01.03.2011, 19:26 | #8 |
Регистрация: 01.03.2011
Сообщений: 3
|
сделал так же 3 таблицы, но вопрос такой, как организовать раздел отправленных сообщений и удаленных, ведь если одному и тому же сообщению в таблице кросс делать графу отправлено удалено то у другого пользователя оно тоже будет таковым, объясните как?
|
02.03.2011, 08:22 | #9 | |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Цитата:
Стрелок-охотник
|
|
02.03.2011, 10:19 | #10 |
Регистрация: 01.03.2011
Сообщений: 3
|
так и сделал... вот что получилось...
вопрос... так и не нашел рабочего примера как сделать подсветку строк при наведении и как при нажатии на кнопку удалить, передать id конкретного сообщения, чтобы это сделать должен выбираться чекбокс... тоже не нашел как это автоматом сделать... help!! мозг кипит |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простой клиент обмена сообщениями | eks-s | Работа с сетью в Delphi | 1 | 04.03.2008 01:03 |
Обмен сообщениями без IP адреса | Иллидан | Работа с сетью в Delphi | 9 | 29.02.2008 20:48 |
Алгоритм обмена ключами Диффи-Хеллмана | Victor1987 | Помощь студентам | 0 | 04.12.2007 01:19 |
Мой собственный модуль работы с сообщениями | Sibedir | Софт | 7 | 17.11.2007 01:23 |