SQLXML — XML 和关系架构之间的映射
可以使用 SQLXML 映射技术来创建关系数据的逻辑 XML 视图。XML 视图(也称为“映射”或“带注解的架构”)是通过将特殊的注解添加到特定的 XSD 架构中创建的。于是,其他的 SQLXML 技术就可以使用这种带注解的架构,将针对逻辑 XML 视图进行的查询和更新转换成针对关系表进行的查询和更新:
| • |
当 XML 视图与 XPath 查询组合在一起时,SQLXML 将生成 FOR XML 查询来查找请求数据,并且根据架构的指定对其进行构形。 |
| • |
SQLXML Updategrams 表示对 XML 实例进行的更改,当与带注解的架构组合在一起时,将使用开放式并发将这些更改重新保存到关系更改中,以确保更新正确的数据。 |
| • |
SQLXML Bulkload 使用 XML 视图将 XML 数据“切碎”并存放到关系表中。 |
有关这些主题的更多信息,请访问 SQLXML documentation。
创建关系表的 XML 视图
要创建数据库的 XML 视图,需要从用于 XML 数据的 XSD 架构开始。数据库表/视图中的行将映射为该架构中复杂类型的元素。数据库中的列值映射为属性或简单类型的元素。
默认情况下,如果没有给出显式注解,SQLXML 就会假定复杂类型的元素将映射到表,而简单类型的元素和属性将映射到列。只有当元素和属性的名称与数据库中表和列的名称完全相同时,这才有效。
如果元素/属性的名称与它映射到的表/视图或列的名称不同,则必须创建显式映射。下面的注解用于指定 XML 文档中的元素或属性间的映射和数据库中的表(视图)或列之间的映射:
| • |
sql:relation — 将 XML 元素映射到数据库表。 |
| • |
sql:field — 将元素或属性映射到数据库列。 |
通过映射关系创建 XML 视图中的层次
在数据库中,表可以通过外键关系来关联。在 XML 中,这些相同的关系是通过嵌套的元素层次来表示的。为了在映射中构造正确的嵌套,必须指定关联元素的方式。可以使用 sql:relationship 注解在映射架构元素中建立这些关系。在这种注解中,可以指定父表和子表,以及每个表中需要用于执行加入的列。然后,SQLXML 将利用这些信息为映射构造正确的嵌套层次。
使用溢出存储未使用的数据
当 XML 数据有正规的结构时映射是有效的。然而,在 XML 中,可能有一些数据是非结构化的,还可能有一些数据没有映射到特定的列。要存储这种数据并随后
