Рекомендации по схеме базы данных для функции обмена сообщениями между пользователями на веб-сайте, управляемом PHP - PullRequest
2 голосов
/ 25 августа 2011

У меня есть пользовательский веб-сайт. Я хочу добавить функцию обмена сообщениями. Мои опасения связаны с управляемостью и производительностью моей базы данных.

Я подумываю организовать это так: у меня есть таблица пользователей, и у всех моих пользователей есть уникальные идентификаторы. Любой инициированный пользователем диалог между двумя пользователями будет иметь запись в «разговорах», и все сообщения в этом разговоре будут использовать внешние ключи, которые ссылаются на этот разговор_ *. 1003 *

Кто-нибудь может подумать о каких-либо причинах, чтобы не придерживаться этого подхода? Мне интересно, насколько хорошо он будет работать в долгосрочной перспективе, при условии, что я использую индексы и ограничиваю свои запросы до ~ 20 результатов для каждой страницы.

+--------+
| users  |
+--------+
|users_id|
|        |
+--------+

+-------------+
|conversations|
+-------------+
|id           |
|user_id1     |
|user_id2     |
+-------------+

+----------------------+
|conversations_messages|
+----------------------+
|id                    |
|conversations_id      | 
|message_body (varchar)|
|message_time (unix timestamp
+----------------------+

Edit: Я понял, что не могу отследить, кто отправитель / получатель. Мой первый инстинкт - просто добавить столбец «отправитель» вversations_messages

1 Ответ

3 голосов
/ 25 августа 2011

Посмотрите на мой ответ на этот вопрос . Я обращаюсь к подобной проблеме дизайна там. Он включает обработку того, кто видел, какие сообщения и кто является отправителем каждого сообщения.

...