我有很多对象,每个对象都有许多不同的属性.许多属性重叠,例如,许多对象具有属性"name".由于存在许多类型的对象,如果为具有相同属性集的每组对象构造一个表,则将占用大量表.
目前我正在使用mysql,它以这种方式存储.
object_id|attribute_id|data
有这样的几个表,不同的表有不同类型的数据.例如,在Integer表中,它只存储整数
所以我可以在系统中存储所有类型的对象,并且仍然可以根据属性的数据进行过滤和排序.它使查询更复杂,我认为它不是有效的.
这是在mysql或其他关系数据库中执行此操作的唯一方法吗?我应该尝试为此问题找到其他数据库模型吗?
编辑 我做了一些研究,似乎我需要的是一个具有SQL功能的面向文档的数据库.
我想你想要做的是研究称为"对象关系映射"的领域.这是一个有很多解决方案的大区域.一些用在框架中,例如"Rails中使用的ActiveRecord".
如果你想使用类似RDBMS的面向文档的数据库,我认为你应该研究mongoDB:
MongoDB的一个关键目标是弥合键/值存储(快速且高度可扩展)与传统RDBMS系统(功能深入)之间的差距.