我有以下 PHP 类结构:
我想将对象保存在数据库中(MySQL、MSSQL、postgreSQL 和所有标准提供商提供)。
我的要求是:
- 所有电子设备/所有计算机/笔记本电脑的列表...包括子类的对象,所有属性都属于具有过滤器和顺序可能性的对象(所有属性的过滤器)
- 通过 ID 选择一条记录
- 在 DB 结构中插入新对象(读比写重要得多)
- 没有太多的连接和尽可能少的数据库请求
我发现了一些可能性,但没有一种可能性符合我的所有要求:
- 类表继承:获取包括子类在内的所有项目非常复杂,而且我找不到用于生成正确连接的自动方法(因此我不必为每个子类定义单独的连接语句)。另一个问题:如果您想通过 ID 查找对象,您不知道必须使用哪个连接路径。
- 单表继承:太多不同的属性 --> NULL 字段
- 具体表继承:要搜索所有项目,您必须执行许多数据库请求,因为 UNION 需要相同数量的列
- EAV:如果需要过滤器 1 连接/属性 --> 性能会很差(是否有可能只连接过滤器属性而其余的作为行?)
- NoSQL 数据库:没有提供者(服务器太贵,我不想关心管理)
- postgreSQL 内置继承:没有按照我需要的方式工作(从基础你可以列出所有的electric_devices,但只是常见的属性)
信息:
- 存储对象的总数约为 100
- 属性的完整数量(~100)很少改变
- 许多属性具有预定义的多项选择值
- 每个对象有 20 到 50 个可能的属性
最后对我来说没有办法,但我认为一定有可能,其他门户网站也是这样做的(例如eBay或任何小型广告门户网站),可能我想了很多,我没有看到最简单的方法。
有没有一种方法可以满足所有要求?
感谢您的每一个帮助(链接,关键字,...),如果有不清楚的地方,请问。