SQL-聊天数据库模式,用于删除一方或双方的会话
我正在设计一个聊天数据库,其中包含以下要求:SQL-聊天数据库模式,用于删除一方或双方的会话,sql,chat,Sql,Chat,我正在设计一个聊天数据库,其中包含以下要求: 只有私人信息,A到B。没有群组或房间 当用户A向B发送消息时,如果用户A删除对话,则用户B仍然能够查看该对话,直到用户B将其删除 消息不能单独擦除。只能删除完整的历史记录对话 现在我有了这个: 当用户A向用户B发送消息时,将创建一个带有id的消息寄存器。这将是会话表的外键 在对话表中,将为相同的消息id创建两个寄存器。一个用于发送消息的用户,另一个用于接收消息的用户。每个寄存器都有一个名为in-out的字段,其中指定消息是发送还是接收的。例如:
- 只有私人信息,A到B。没有群组或房间
- 当用户A向B发送消息时,如果用户A删除对话,则用户B仍然能够查看该对话,直到用户B将其删除
- 消息不能单独擦除。只能删除完整的历史记录对话
- 当用户A向用户B发送消息时,将创建一个带有id的消息寄存器。这将是会话表的外键
- 在对话表中,将为相同的消息id创建两个寄存器。一个用于发送消息的用户,另一个用于接收消息的用户。每个寄存器都有一个名为in-out的字段,其中指定消息是发送还是接收的。例如:
/*
对话\u表消息\u表
+--------------------------------------------+ +----------------------------------------+
|用户id |参与者id |输入输出|消息id |消息id |正文|
+--------------------------------------------+ +----------------------------------------+
|A | B | 0 | 101 | 101 |你好B,怎么了|
|B | A | 1 | 101 | | 102 |嘿,A,这里是stackoverflow|
|B | A | 0 | 102 | | 103 |这是很好的B,还有什么新鲜事|
|A | B | 1 | 102 |+----------------------------------------+
|A | B | 0 | 103|
|B | A | 1 | 103|
+--------------------------------------------+
聊天窗口
+-----------------------------------------+
|用户A|
+-----------------------------------------+
|你好,B,怎么了|
|收到:嘿,A,这里是stackoverflow|
|森特:很好,B,有什么新鲜事吗|
+-----------------------------------------+
+-----------------------------------------+
|用户B|
+-----------------------------------------+
|你好,B,怎么了|
|Sent:嘿,A,这里是stackoverflow|
|收到:很好,B,有什么新鲜事吗|
+-----------------------------------------+
*/
我认为在关系数据库中很好。大多数人都遵循类似的体系结构我不建议使用UUID
或NEWID()
(在SQL Server
中使用)来存储每个消息,正如您先前建议的那样,每个消息将生成一个32字符的id。例如,如果您有1000个用户,每个用户每天大约发送10条消息,那么生成的UID总数将为10000条,现在您可以计算每周、每月和每年的数据。实际上会有更多的数据,所以我建议您使用两个值的组合作为唯一标识符。
UserID
和MessageID
。
将它们都标记为15位数字值或任何您认为正确的值,并将它们组合起来以识别每个用户的消息
示例案例:
UserID: 1000001
MessageId: 1000001
Message: 'Hello'
UserID: 1000002
MessageId: 1000001
Message: 'Hi'
让我知道你的想法 有点晚了:D但是,如何为mongodb数据库创建这个呢?我发现很难删除一个用户的对话:)这应该是一个评论而不是答案