我有三个实体是“可寻址的”(可以有地址):
交货点
Customers
配送中心
每个可寻址的实体也都是可寻址的(具有纬度和经度),但我有一些实体是可地理的,但不能寻址,比如跟踪点和路由点( lat和is的有序序列)。
使用理论2(使用Symfony2和YAML映射)实现这一目标的最佳方法是什么(请考虑性能,因为某些表可能有数百万行)?
我的问题是:解决这个问题的最佳方法是什么?映射的超类?单表继承?多表继承?通过阅读教义的文档,我不知道哪一个是最适合这个的。
如果这重要的话,我正在使用PostgreSQL。
发布于 2013-07-18 17:06:34
最快的选项是根本不使用任何表继承和将所有实体映射到不同的表,但是如果出于某种原因要使用表继承.
单表继承通过体系结构更快,因为查询中的联接较少.请参阅这篇文章以了解表继承的工作原理/外观..。
元数据通常是缓存的,所以在使用映射超类或为每个实体提供完整的映射(从术语上说是干的)之间不会有明显的性能影响。
真正的性能提升将来自于优化查询和缓存这些查询及其结果。
发布于 2013-07-19 21:11:32
在这种情况下,组合肯定比继承更合适。
你用来描述这个问题的语言很有启发性。您将“可寻址”定义为“可以拥有和地址,这与”客户是一种类型的地址“不同。”在后一种情况下,继承更有意义。
零级只是使用关联(地址OneToOne地理定位、客户OneToOne地址、RoutePoint OneToOne地理定位等)。
如果您想对任何有地址的操作执行一组操作,请创建一个名为可寻址的接口,并让您的客户实现它。
如果您运行的是PHP5.4,您可以使用这些特性来实现这些接口。
https://stackoverflow.com/questions/17729333
复制相似问题