[英]Good Database design/normalisation
我被分配了一个任务,我不确定该如何处理它:
我必须构建一个支持多个设备的消息系统,并且它应该尽可能高效。 用户最多可以拥有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
这里的问题显然是设备的冗余,但是开销会更低。
什么是更好的解决方案,或者我完全错过了什么?
提前致谢!
第一种方法是完全有效的,应该是可行的方法。 第二种方法的可维护性令人震惊,并且在以后添加一些代码时,该代码将不太可读(我必须维护以这种方式设计的多个DB)。
我建议使用第二种方法,至少有两个原因:
在第一种方法中,如果您担心PendingTransmissions
大小过大,则可以像这样处理:
isDelivered
和deliveredTimestamp
。 然后,您可以定期归档所有已交付且早于1个月的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.