gpt4 book ai didi

mysql - 良好的数据库设计/规范化

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:59 29 4
gpt4 key购买 nike

我被分配了一项任务,但我不确定如何完成它:

我必须构建一个支持多种设备的消息系统,并且它应该尽可能高效。用户最多可以有 10 台设备,当用户收到消息时,所有设备都需要接收消息。

我有两个想法:

Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data

Table PendingTransmissions:
- MessageID (FK (PK of above table))
- DeviceID (FK)

这里的问题是每次发送消息时,都会为每个设备创建一个条目,这会导致很大的开销。

Table Messages:
- ID (PK)
- SenderID
- ReceiverID
- Data
- ReceivedDevice1
- ReceivedDevice2
- ReceivedDevice3
- ReceivedDevice4
- ReceivedDevice5
- ReceivedDevice6
- ReceivedDevice7
- ReceivedDevice8
- ReceivedDevice9
- ReceivedDevice10

这里的问题很明显是Devices的冗余,但是开销会低一些。

什么是更好的解决方案,或者我完全错过了什么?

提前致谢!

最佳答案

出于(至少)两个原因,我不建议使用第二种方法:

  • 如今,一个用户可以拥有 10 台设备。如果这个数字在未来变为 20,这意味着您的应用程序中的许多层都发生了变化:数据库、应用程序实体类、DAO 等。
  • 将来,您可能希望为群组添加功能。为此扩展此设计会很麻烦。

在第一种方法中,如果您担心您的 PendingTransmissions 变得太大,您可以像这样处理它:

  • 添加两列:isDelivereddeliveredTimestamp。然后,您可以定期归档所有已交付且早于 1 个月的行。

关于mysql - 良好的数据库设计/规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533977/

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