将对象存储在数据库中

Cha*_* Xu 3 database

我有很多对象,每个对象都有许多不同的属性.许多属性重叠,例如,许多对象具有属性"name".由于存在许多类型的对象,如果为具有相同属性集的每组对象构造一个表,则将占用大量表.

目前我正在使用mysql,它以这种方式存储.

object_id|attribute_id|data
Run Code Online (Sandbox Code Playgroud)

有这样的几个表,不同的表有不同类型的数据.例如,在Integer表中,它只存储整数

所以我可以在系统中存储所有类型的对象,并且仍然可以根据属性的数据进行过滤和排序.它使查询更复杂,我认为它不是有效的.

这是在mysql或其他关系数据库中执行此操作的唯一方法吗?我应该尝试为此问题找到其他数据库模型吗?

编辑 我做了一些研究,似乎我需要的是一个具有SQL功能的面向文档的数据库.

Dev*_*tas 5

我想你想要做的是研究称为"对象关系映射"的领域.这是一个有很多解决方案的大区域.一些用在框架中,例如"Rails中使用的ActiveRecord".


naw*_*oth 5

如果你想使用类似RDBMS的面向文档的数据库,我认为你应该研究mongoDB:

MongoDB的一个关键目标是弥合键/值存储(快速且高度可扩展)与传统RDBMS系统(功能深入)之间的差距.