SQL Server 2005中XML数据建模简介
2007-05-19 09:42:32 来源:WEB开发网XML 列可能是基于 [n]varchar(max) 列的计算列。您不能在 XML 计算列上创建 XML 索引,也不能在 [n]varchar(max) 或 varbinary(max) 列上生成 XML 索引。
XML 视图技术
通过在 XML 架构和数据库的表之间定义映射,可以创建持久性数据的"XML 视图"。可以使用 XML 批量负载来填充使用 XML 视图的基础表。您可以查询使用 XPath 1.0 的 XML 视图;该查询将被转换为针对表的 SQL 查询。与此类似,更新也会被传递到这些表。
在以下情况下,此技术很有用:
• 您希望拥有以 XML 为中心的编程模型,该模型使用现有关系数据上的 XML 视图。
• 您的 XML 数据具有架构 (XSD, XDR),它可能由外部合作伙伴提供。
• 数据的顺序不重要,或者您的可查询数据不是递归的,或者预先已经知道最大递归深度。
• 您希望通过使用 XPath 1.0 的 XML 视图来查询和修改数据。
• 您希望批量加载 XML 数据,并将其分解到使用 XML 视图的基础表中。
这方面的例子包括以 XML 形式公开以便用于数据交换和 Web 服务的关系数据,以及具有固定架构的 XML 数据。有关详细信息,请参阅 SQLXML 开发人员中心。
示例:使用带有批注的 XML 架构 (AXSD) 对数据进行建模
假设您现有一些希望以 XML 形式进行操作的关系数据(例如,客户、订单和行项目)。请使用 AXSD 在关系数据上定义 XML 视图。通过 XML 视图,可以将 XML 数据批量加载到表中,以及使用 XML 视图查询和更新关系数据。如果您需要在自己的 SQL 应用程序持续工作时与其他应用程序中的 XML 标记交换数据,则该模式很有用。
混合模型
很多时候,适合将关系数据和 XML 数据类型列结合起来进行数据建模。可以将 XML 数据中的某些值存储在关系列中,而将其余或全部 XML 值存储在 XML 列中。这可能会产生更好的性能(例如,可以完全控制在关系列上创建的索引)和锁定特性。然而,这需要您承担更多的责任来管理数据存储。
要存储在关系列中的值取决于您的工作负荷。例如,如果您基于路径表达式 /Customer/@CustId 检索全部 XML 值,则通过将 CustId 属性的值提升到关系列中以及将其编入索引,可能产生更高的查询性能。另一方面,如果您的 XML 数据被广泛且非冗余地分解到关系列中,则重新组合的成本可能很大。
对于高度结构化的 XML 数据(例如,表的内容已经转换到 XML),可以将所有值映射到关系列(可能使用 XML 视图技术)。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接