gpt4 book ai didi

mysql - 个人和全局消息数据库设计

转载 作者:行者123 更新时间:2023-11-29 00:12:08 26 4
gpt4 key购买 nike

我正在尝试实现一个数据库设计系统,该系统将向一个人(因此是一对一)或许多人(一对多)发送消息。

table --users
|u_id | Name |
| 01 | Aku |
| 02 | Sika |
| 03 | Admin|

table --messages
|m_id | sender_id | Body | Time |
| 100 | 01 | hello | 16:04|
| 200 | 02 | Hi | 16:08|
| 300 | 03 | hi Guys| 19:12|

table --recipient
|r_id| m_id | recipient_id|
| 50 | 100 | 02 |
| 51 | 200 | 01 |
| 52 | 300 | 01 |
| 53 | 300 | 02 |

table --message_status
|m_id | recipient_id | status | deleted |
|100 | 02 | read | no |
|200 | 01 | unread | no |
|300 | 01 | read | yes |
|300 | 02 | unread | no |

根据我上面的模式,用户可以向一个人发送消息,也可以向许多人发送消息。一旦用户向一个人发送消息,我们将拥有所有收件人 useridrecipient表以及 message_status table 。因此,假设用户一次向 100 万用户发送一条消息,这意味着 recipient 中将有 100 万行。和 message_status表。

当一个用户向许多用户发送消息时,请问是否有一种方法可以通过减少行的插入次数来解决这个问题,或者这是正确的做法。

注意

请系统允许每个收件人删除收到的消息(如果他/她愿意),但是他们的删除不应影响其他收件人。因此,如果用户使用 u_id = 02删除她收到的消息,用户 u_id=01仍应查看他的消息。

感谢您的帮助。

最佳答案

为什么不将message_status 表和recipient 表 结合起来呢?然后你只更新/插入一个表而不是两个。

收件人:

      |r_id| m_id | recipient_id|  status | deleted |
| 50 | 100 | 02 | read | no |
| 51 | 200 | 01 | unread | no |
| 52 | 300 | 01 | read | yes |
| 53 | 300 | 02 | unread | no |

关于mysql - 个人和全局消息数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com