我有很多对象,每个对象都可以有很多不同类型的属性。许多属性重叠,例如,许多对象具有“名称”属性。 由于有很多类型的对象,如果为每个具有相同属性集的对象集构造一个表,它将占用很多表。在数据库中存储对象
目前我使用的是一个mysql,它以这种方式存储。
object_id|attribute_id|data
有几个这样的表,不同的表有不同类型的数据。 例如,在整数表中,它只存储整数
因此,我可以将所有类型的对象存储在系统中,并且仍然可以根据属性的数据进行过滤和排序。它使查询有点复杂,我不认为它是有效的。
这是在mysql或其他关系数据库中做的唯一方法吗? 我应该尝试为这个问题找到其他数据库模型吗?
编辑 我做了一些研究,看来我需要的是一个具有SQL功能的面向文档的数据库。
MongoDB的另一个好处就是它可以直接适用于您的情况,因为您可以拥有在一个集合中类似但不相同的所有不同类型的对象(类似于MySQL中的表)。如果您使用像Doctrine这样的良好ORM,它甚至可以自动区分对象的类型,并在PHP中从数据库加载它们时将它们转换为正确的对象。不知道你使用的是什么语言,但我敢打赌,如果它不是PHP,就会有类似的东西。 – cjroth 2011-02-04 02:36:07