Как создать гибкую схему таблиц для хранения сообщений из разных чатов?

340
03 декабря 2017, 10:58

Помогите пожалуйста разобраться в следующей ситуации:

Есть два вида API где хранятся истории сообщений, это Zopim и Chat2Desc(импортировать в Postman) . Пока эти два но могут потом и другие появится.

И моя ДБ с таблицей users:

Table users
id , email, phone, ...

В Zopim пользователи идентифицируются через email, a в Chat2Desc через телефон. Для меня эти два поля важны, какой бы чат не был и сколько бы их не было.

То есть если я получаю емайл либо телефон пользователя в сообщениях, то делаю запрос в свою базу (table users) для идентифицирования своего пользователя.

Да и в принципе даже структура чатов не важна, я данные как нибудь да выберу.А вот как их правильно сохранить , да так чтоб у меня была одна структура для всех .

И вот что я придумал (Что то не нравится, особенно таблица chat_clients):

Разъяснение:

Таблица chats (Данные для чата) :

  1. client_id - указывает на id таблицы chat_clients
  2. duration - длительность чата
  3. system_type - хранит имя чата (Zopim, Chat2Desc, ... )
  4. created_at - дата создания

Таблица chat_clients (сведений об пользователей которые были в чате):

  1. assigned_data - те инициалы под которыми пользователи были в чате
  2. is_agent - (0 | 1): 1 => мой пользователь, 0 => не мой
  3. users_id - id пользователя. Содержит либо id из таблицы users либо пустой.
  4. bean_module - неважно (сведение о моём пользователе)
  5. unique_col - Тут будет либо email (из Zopim) либо телефон (из Chat2Desc, Либо думаю хранить id таблицы users).Будет гарантировать уникальность значений.

Связка users_id + unique_col уникальна (UNIQUE KEY user_id_unique_col_UQ (user_id,unique_col))

Таблица chat_messages:

  1. text - текст сообщения.
  2. client_id - указывает на id таблицы chat_clients
  3. chat_id - указывает на id таблицы chats
  4. file_id - указывает на id таблицы chat_files
  5. transport - значение будет для Chat2Desc (Viber, WhatsApp ,...), для Zopim ,чтоб не пустовал , Zopim

Таблица chat_files Сведения о переданных файлах в чате.Aналогичных таблиц может быть может нет для хранения дополнительной инфы.

Доп инфо: В дальнейшем собираюсь для каждого пользователя выводит историю сообщений.

Вопрос: Как создать гибкую схему таблиц для хранения сообщений из разных чатов ?

Заранее благодарю.

READ ALSO
Разница меду InstalledUICulture и CurrentUICulture

Разница меду InstalledUICulture и CurrentUICulture

Вопрос: если установлен другой языковой пакет для ОС, то CurrentUICulture какой даст результат? Установленный язык ОС или языкового пакета?

251
Передача переменных и использования их (C#)

Передача переменных и использования их (C#)

Хочу передать переменные (Swt, Srt) из формы Settings в Main, и использовать ихПроблема в том что при запуске программы WorkDelay и RecreationDelay создаются пустыми...

327
Синхронизация потоков WPF

Синхронизация потоков WPF

Создаю я второй поток для расчетов параллельных, расчеты в циклеВ итоге, чтобы после итерации добавить данные в таблицу основного потока,...

360
Эхо клиент сервер

Эхо клиент сервер

Здравствуйте, реализую клиент-сервер по типу-эхо: клиент каждые 10 секунд шлет пакет серверу, а тот отвечаетЕсли нужно отрубить клиента, то все...

288