当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server 2008数据库中的新数据类型

MSSQL
精细讲述SQL Server数据库备份多种方法
让SQL Server也能使用2G以上内存
SQL Server数据库崩溃恢复之法
创建区分大小写的SQL Server 2000实例
SQL Server中易混淆的数据类型
如何优化SQL Server数据库查询
使用Robot连接SQL的例子
如何让你的SQL运行得更快
对Sql Server中的表添加级联更新和级联删除
常用SQL语句书写技巧
SQL Server与Oracle实施成本上的差异
解析SQL Server的数据类型 BLOB
SQL Server数据库和XML标识语言的集成
SQLServer 数据库还原和孤立用户的解决办法
SQL Server 2000/2005 分页SQL
Sql Server锁表
SQLServer2005实现远程数据库备份
SQL精妙语句
SQL Server 2008的逻辑查询处理步骤
如何让你的SQL运行得更快

MSSQL 中的 SQL Server 2008数据库中的新数据类型


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 33 ::
收藏到网摘: n/a

对于关系型数据库来说,表现树状的层次结构始终是一个问题。微软在SQL Server 2005中首次尝试了解决这个问题,那就是被称之为通用数据表表达式(Common Table Expressions,CTE)的实现方式。

尽管CTE在现有的数据库架构中运行良好,微软找到了一种将此类层次结构作为头等概念来使用的方式。因此,为了实现这种效果,他们在SQL Server 2008中提出了一种“HierarchId”数据类型。

在传统的层次结构中,一条记录仅仅储存了一个指向它父记录的引用,这使得一条记录能够获得它在层次结构中的相对位置,而不是绝对位置。改变某条记录的父数据行引用是一个原子更新操作,它不会影响到该记录的任何子记录。

一个HierarchyId类型的字段储存了记录在层次结构中的准确位置。Denny Cherry提供了一个例子,其中展示了0x、0x58以及0x5AC0三个值,它们的字符串表现形式分别为“/”,“/1/”和“/1/1/”。这就引发了有关一致性和性能方面的问题,尤其是父记录被改变的时候。Ravi S.Maniam建议在改变父记录操作不频繁的情况下使用这种设计方式。

与HierarchyId类型同时出现的还有一系列函数。GetAncestor和GetDescendant方法可以用来遍历树。ToString和Parse方法用于HierarchyId类型二进制与字符串表现形式之前的转换。有些古怪的是,随之而来的还有用于支持BinaryReader与BinaryWriter的一些方法。

再来回头看看GetDescendant,这是一个有些古怪的方法。它实际上不返回那些子记录,而是返回那些潜在的子节点的位置。向树中插入一个新的记录时,我们必需调用GetDescendant方法来获得指定父记录的最后一个子节点的位置,然后才能获得紧跟着该位置之后的空隙。

迄今为止还没有使用T-SQL来获得树状结构的合适示例。事实上,与它有关的所有东西都更像是一些命令,而不是基于集合的操作。