Help please solve the following situation:
And my database with the
Table users id , email, phone, ...
In Zopim, users are identified via email, and in Chat2Desc through the phone. For me, these two fields are important, whatever the chat was and how many would not be.
That is, if I receive an email or a user's phone in messages, I make a request to my database (
table users) to identify my user.
And in principle, even the structure of chat rooms is not important.I'll somehow choose them.And here's how to properly save them, so much so that I had one structure for everyone.
chats (Data for chat):
client_id- indicates the id of the
duration- the duration of the chat (120 seconds)
system_type- stores the name of the chat (Zopim, Chat2Desc, ...)
created_at- creation date
chat_clients (information about users who were in the chat):
is_agent- 0 | 1: 1 => my user, 0 => not my
user_id- is the user id. Contains either id from the users table or empty.
assigned_data- those initials under which users were in the chat
bean_module- it does not matter (information about my user)
unique_col- There will either be a email (from Zopim) or a phone (from Chat2Desc, Or I think to store the id of the users table). Will guarantee the uniqueness of the values.
The users_id + unique_col bunch is unique (
UNIQUE KEY user_id_unique_col_UQ (user_id, unique_col))
text- the text of the message.
client_id- indicates the id of the chat_clients table
chat_id- indicates the id of the table chats
file_id- indicates the id of the chat_files table
transport- the value will be for Chat2Desc (Viber, WhatsApp, ...), for Zopim, so it's not empty, Zopim
chat_files Information about the transferred files in the chat. Analogical tables may be not to store additional information.
In the future I'm going to select the history of correspondence for each user.
Q: How can I improve the structure of tables to get more flexibility ?
Thank you in advance.