我设计了一个具有抽象基类的应用程序,该类描述具有一些公共字段(名称、日期等)的通用设备。以及许多描述协议及其属性的继承类,如:
此外,我还有许多表,其中包含通过这些协议收集的数据,并引用了父设备,如下所示:
SNMP_detections (id, collected_data, datetime, parent_obj [FK to SNMP])
HTTP_detections (id, collected_data, datetime, parent_obj [FK to HTTP])
所以,我在考虑优化当前的数据库布局,特别是测量表,我感兴趣的是如何只使用一个表并引用其中的父设备(可以是HTTP或SNMP).
有什么建议吗?
发布于 2019-07-15 10:12:10
如果我正确理解,重点是将所有特定的度量表合并到一个通用表中,同时仍然能够指向正确的“设备”父记录。
如果是的话,那么多表继承可能就是你要找的。
使用多表继承,您确实有一个带有“公共字段”的单一基“设备”表(加上每个设备子类具有特定字段的不同表),因此您的通用“度量”表只需要在基本“设备”表上使用一个外键。
当然,缺点是需要额外的工作才能获得设备的子类数据,但是IIRC已经有几个Django包实现了这一点。
https://stackoverflow.com/questions/57034973
复制相似问题