# Hardik
- Solved for Db design problem. lots of issue with table design and db queries. Please skip
# Question 1: DB design.
- user service.
- chat service.
- 1<>1 chat.
- text message
- list of conversations, sorted, paginated. Query
- list of messages, sorted, paginated. Query
// timstamp
// user -> n number of conversations(user2, user3, user4) -> 20 conversta
// converstaion -> m messages -> 20 message
TableName -> ColumnsName -> DataType.
user_conversations (index -> user_id * last_updated)
-----------
user_id int
receiver_id int
conversation_id int
created_at timestamp
last_updated timestamp
conversation_message
-----------
converstaion_id int
user_id int
message TEXT
created_at timestamp
cid1 userA ... 0
cid1 userB ... 1
user A user B cid1
user B user A cid1
select converstaion_id from user_conversations where user_id = ? ordered by lastUpdated desc;
select user_id,message from conversation_msg where cid = ? ordered by createdat desc;
user1 -> user2 -> converstaionId createdOn lastUpdated
user1 -> user3 -> conversationId
cid1 -> message timestamp
cid1 -> message1 0
cid1 -> message2 1