如何在数据库中存储对象以进行检索

时间:2011-10-11 12:16:56

标签: database database-design object relational-database object-oriented-database

我正在尝试创建一个可用于存储大量对象的数据库。我试图用关系数据库做这个,但它似乎有点像野兽。我的意思是拿下面的简单对象

Object = {
   "Type":"Car",
   "Color":"Green",
   "Doors":3,
   Wheels:{
       "Material":"Alloy",
       "Size":17,
       "Color":"Black",
       "Tyres":{
          "Profile":"Low",
          "Material":"Rubber"
          "Tread":"Slick"
       }
   },
   Seats:{
       "Number":2,
       "Seatbelts":true
   }
}

从这些你可以看到一辆3门绿色汽车,黑色17英寸合金轮毂,低调,光滑的橡胶轮胎,2个安全带座椅。显然,整个对象并不是一成不变的,你可以继续扩展事物

(例如

Seatbelt:{
    "Type":"Harness",
    "Buckles":1,
    "Color":"Blue"
}

最后,假设有很多对象,我想返回一个具有这些特征的对象列表

{
"Type":"Car"
"Doors":3
}

从这里我可以得到一个5辆车的列表,它有3个门,但有各种其他属性,没关系,我没有指定这些标准。我可以进一步缩小它,寻找所有带有光滑轮胎的3门车......我可能会回来2

{
   "Type":"Car"
   "Doors":3
   "Wheels":{
      "Tyres":{
         "Tread":"Slick"
      }
   }
}

所以我在想一个有3个主表的数据库:对象,属性和值。然后有链接表,将对象链接到属性,属性链接到值。但是,如果在示例中我有包含对象的对象,以及我是否计划拥有一个汽车对象,该示例可能是一个扩展名?

我们如何处理这类数据库问题?它可以用关系数据库完成,还是需要一个面向对象的数据库?如果是这样,我是否可以像使用MySQL一样轻松地在网站上实现任何OODB。

如果您可以使用RDB来执行此操作,那么查询肯定会非常耗费资源? OODB怎么样?资源密集型?

如何为网站制作面向对象的数据库?使用RDB或OODB,我不介意,它只是如何

1 个答案:

答案 0 :(得分:0)

我会看看hibernate(对于Java)或nhibernate(对于.net)。 http://www.hibernate.org

Hibernate为关系数据库(如MySql)提供ORM(对象关系映射)

另一个解决方案(我个人不喜欢)对于少量数据是xml文件,然后可以使用xpath表达式解析数据。 http://www.w3schools.com/xpath