您的位置:首页 > 数据库

MS SQL SERVER2005 XML 最佳实践5

2007-03-30 20:24 211 查看
在下列情况下,请使用非类型化的 xml 数据类型:

您没有对应于您的 XML 数据的架构。

您有架构,但不希望服务器验证数据。当应用程序在将数据存储到服务器之前执行客户端验证时,或临时存储根据架构确定无效的 XML 数据时,或在服务器上使用不受支持的架构组件(如 key/keyref)时,有时会出现这种情况。

在下列情况下,请使用类型化的 xml 数据类型:

您有对应于您的 XML 数据的架构,并且希望服务器根据 XML 架构验证 XML 数据。

您希望充分利用基于类型信息的存储和查询优化。

您希望在编译查询过程中更好地充分利用类型信息。

类型化的 XML 列、参数和变量可以存储 XML 文档或内容。但是,必须使用标志指定在声明时是存储文档还是存储内容。此外,必须提供 XML 架构集合。如果每个 XML 实例都刚好有一个顶级元素,请指定 DOCUMENT。否则,请使用 CONTENT。查询编译器在编译查询过程中的类型检查中使用 DOCUMENT 标志以推断单一的顶级元素。

除了对 XML 列进行类型化之外,还可以对类型化或非类型化的 xml 数据类型列使用关系(列或行)约束。在下列情况下,请使用约束:

无法在 XML 架构中表达业务规则。例如,花店的交货地址必须在其营业地点周围 50 英里之内。这可以编写为 XML 列的约束。约束可能涉及 xml 数据类型方法。

您的约束涉及表中的其他 XML 列或非 XML 列。例如,强制使 XML 实例中的客户 ID (/Customer/@CustId) 与 CustomerID 关系列中的值匹配。

文档类型定义 (DTD)
可以使用 XML 架构来对 xml 数据类型列、变量和参数进行类型化,但不能使用 DTD 进行此项操作。但是,内联 DTD 既可用于非类型化的 XML,也可用于类型化的 XML,以便提供默认值,并将实体引用替换为其扩展形式。

可以通过使用第三方工具将 DTD 转换为 XML 架构文档,然后将 XML 架构加载到数据库中。

对 xml 数据类型列创建索引
可以对 xml 数据类型列创建 XML 索引。它将对列中 XML 实例的所有标记、值和路径进行索引,从而提高查询性能。在下列情况下,您的应用程序可以从 XML 索引中获益:

对 XML 列进行查询在您的工作负荷中很常见。必须考虑数据修改过程中的 XML 索引维护开销。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息