站长论坛

标题: XML和数据库(二) [打印本页]

作者: superadmin    时间: 2007-10-5 20:56
标题: XML和数据库(二)
 值的列,新建一个子元素。
      
  例如,下面的过程(经简化)说明了如何从一个DTD生成一个关系型结构:
       
  对于每种包含元素或者混合内容的元素类型,新建一个表格和一个主键字段。 
  
  对于每个包含混合内容的元素类型,创建一个单独的表格,其中存放未析数据,通过父元素主键链接到父表格。 
  
  对于此元素类型的每个单值属性和只包含未析数据内容、只出现一次的子元素,在该表格中创建一个字段。如果元素类型或者属性是可选的,可以让设置该字段为空值。 
  
  对于每个多值属性和多次出现的子元素,创建一个单独的表格来存储数值,并且通过父元素主键链接到父表格。 
      
  对每个有元素或者混合内容的子元素,通过父元素主键将父元素表格和子元素表格相连接。 
     
  下面的过程(经简化)说明了如何从一个关系型的结构生成一个DTD:
      
  对于每个表格,新建一个元素; 
      
  对于表格中的每个字段,新建一个属性或者是只包含未析数据的子元素; 
       
  对于每个表格字段中提供主键的主键/外键的关系都新建一个子元素。 
   
  不幸的是,这些过程还存在着一些缺陷。例如,DTD中没有方法预先准确地规定数据类型或者字段长度。
  

  因为任何的预先定义(例如通过读取一个示例文档)在读取其它“类型”的文档或者其他文档中包含有超过字长内容的文档时就会产生错误。(长久之策是使用XML schema文档的数据类型。)简单来说,当从一关系型结构生成DTD时,是没有办法预先判断子元素“应该”出现的顺序或者字段(如数据库内部的行标识)是否该进行完全转换。
  
  在以上两种情况中都可能产生命名的冲突。
       
  尽管有这样那样的缺陷,但是这些方法仍然能够很好地奠定在关系型结构和DTD之间互相转换的起点。




欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2