Какова лучшая модель чата 1-1? (АЯКС / CI / JQ) - PullRequest
1 голос
/ 09 марта 2012

Я создаю систему, в которой я планирую позволить пользователю А создать специальную ссылку в чате, чтобы он / она мог общаться с пользователем Б. Это модель чата 1-1.Схема моей модели ниже.Мне нужно знать, практично ли это или можно ли его улучшить.

table messages
chatid; {fk}
message_id; {pk}
timestamp;
sender;

table chat
chatid; {pk}
userA;
userB;
timestamp;

Вот последовательность действий сценария:

  1. Пользователь А намерен общаться с Пользователем Б.
  2. Пользователь A переходит на страницу создания сеанса чата.
  3. Пользователь A выбирает пользователя B из списка.
  4. Пользователь A генерирует сеанс чата / app / chatid /007
  5. Пользователь A копирует и вставляет URL-адрес, чтобы отправить его пользователю B через входящие сообщения.
  6. Пользователь A и пользователь B договариваются о времени, когда они хотят общаться

Я знаю, немного странно, потому что я не знаю, как реализовать систему, в которой пользователь проверяется на онлайн / офлайн, хотя вы могли бы зайти, если у вас есть идеи.

  1. Пользователь A открываетURL чата на hh; mm и пользователь B.
  2. Они начинают общаться.
  3. Страница не перезагружается, и они весело общаются.

Конец.Жду ваших ответов.

Отредактировано Asker

Я искал эту схему.Я не знаю, как бы я добавил его, чтобы показать, что пользователь a / user b находится в сети / не в сети;возможно последняя активностьВы говорите.

tbl_chat
-------------
chat_id (pk)
user_id_a (fk)
user_id_b (fk)
timestamp
tinyint;

tbl_msg
-------------
message_id (pk)
chat_id (fk)
user_id_sender (fk)
message_body
timestamp

добавил tinyint;чтобы tbl_chat, чтобы, когда пользователь A щелкает по «убить чат», он равен 1, по умолчанию tinyint = 0;Так что убивает чат.

1 Ответ

3 голосов
/ 09 марта 2012

Чтобы иметь возможность расширить чат более чем на двух пользователей и не нужно проверять как chat.userA, так и chat.userB в ваших запросах, я бы не использовал userA и userB в таблице чата.Скорее, я бы добавил таблицу (например, chat_users), в которой есть имена пользователей / идентификаторы (что бы вы ни указали в userA и userB) и chatid.Кроме того, я бы сказал, что сообщения должны иметь тело.

table messages
chatid; {fk}
message_id; {pk}
timestamp;
userid; {fk}
body;

table chat
chatid; {pk}
timestamp;

table chat_user
userid; {fk}
chatid; {fk}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...