2015-01-06 3 views
2

Я работаю над реализацией функций чата в Spring-MVC. Это предназначено только для частного чата. Теперь есть ситуация, когда у меня есть 2 пользователя, которые болтают. Я хотел бы сохранить их чаты в базе данных. Я пытаюсь подумать, как я могу его сохранить, чтобы я мог эффективно искать разговоры между двумя пользователями.Чат базы данных модели

В настоящее время моя идея:

Каждое сообщение имеет MessageId, messageTimeStamp, MessageText и идентификатор. Теперь этот идентификатор является строковым значением user1: user2. Поэтому, когда я хочу загрузить разговор между двумя пользователями, у меня есть вход в user1, поэтому я могу искать в базе данных, где присутствует идентификатор user1, и загружать их как историю.

Проблема заключается в загрузке истории чата и накладных расходов. Хороший ли этот подход, любые предложения приветствуются. Спасибо.

ответ

3

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

Еще одна вещь, которую вы можете рассмотреть, - это иметь отдельную таблицу «разговор» или «чат» для хранения данных отношений между пользователями. Затем вы ссылаетесь на беседу из таблицы сообщений. Так что ваши таблицы может выглядеть следующим образом:

  • разговор (идентификатор, user1, user2, время)
  • сообщения (идентификатор, отправитель, conversation_id, текст, время)

Одним из преимуществ является то, что, когда вы просто хотите работать с разговорами, например подсчитать или получить список активных разговоров между пользователями, это будет более эффективно.

Вы можете найти еще несколько примеров с подробным объяснением такого дизайна here.

+0

Оказывается, я реализовал то, что вы сказали уже. Спасибо за информацию, хотя. –

+0

Добро пожаловать, приятно видеть, что вы оказались в том же решении. –

Смежные вопросы