登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
基于XML的数据库总体分析[3]
返回本版】  【发表帖子】  【回复帖子 浏览量  4062      回帖数 0
股约    等级  

楼主 发表于  2011/7/10 2:46:20    编 辑   


2 表格模型:许多中间件软件包用表格模型在XML文档和关系数据库之间传递 
数据。它把XML文档表示为一个单一的表格或者是表格的集合。这样,一个XML 
文档的结构可以用如下的形式表示: 

  <database> 
  <table> 
  <row> 
  <column1>...</column1> 
  <column2>...</column2> 
  ... 
  </row> 
  ... 
  </table> 
  ... 
  </database> 

  这里关键字"talbe"在把数据从数据库传递到XML文档的时候,表示一个 
单一的结果集,把数据从XML文档传递到数据库的时候,表示表示一个单一的 
表格或者视图。但是,当结果集合不只一个的时候,或者当XML文档包括多个 
复杂嵌套的时候,这种传递方式就不能适应了。 

  2 数据专用的对象模型:把一个XML文档表示为由数据对象构成的树,每 
一个元素类型和对象相对应。主要在面向对象和层次数据库中使用,通过传 
统的关系-对象模型也可以映射到关系数据库中。注意这种模型并不是文档对 
象模型(DOM)。比如,销售订单文档可以被看成一个对象树,其中包括五个 
类:Orders, SalesOrder, Customer, Line, 和Part。如下所示: 
  

  当把一个XML文档看成是一个以数据为中心的对象树的时候,元素不一定 
和对象相对应,比如,一个元素只包含PCDATA,它能够被当成一个属性,它 
包括一个单一的,标量值。 

  实际上在XML和数据库之间进行数据转化的时候,需要考虑两个过程:一 
个是从数据库模式中产生DTD,另外一个是根据DTD生成数据库模式 

  从一个DTD中生成一个关系模式的步骤如下: 

  1. 对每一个元素,产生一个表和一个主键列。  

  2. 对每一个有混合内容的元素,产生一个独立的表格,用来存储PCDATA, 
并通过父表的主键和父表相联。  

  3. 对元素类型中的每一个单一值的属性,对具有只有PCDATA内容的子元 
素(该子元素按顺序出现),产生一个单独的列,如果子元素类型或者值是 
可以选择的话,该列就应该可以允许为NULL类型。 

  4. 对有多个值的属性和可以出现多次的子元素(该子元素PCDATA)的话, 
需要创建一个单独的表来存储这些值,并通过父表的主键和父表相联。  

  5. 对每一个包含元素或者混合内容的子元素来说,通过父表的主键把 
父元素和子元素联接起来。 

  从一个关系数据库模式构建DTD步骤如下: 

  1. 对每一个表,创建一个元素。  

  2. 对表中的每一列,创建一个属性或者是一个只有PCDATA 内容的子元素。  

  3. 根据表中的每一主键/外键关系,创建该表元素的子元素。  
1
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们