首页 | 域名注册 | 虚拟主机 | 云企业邮箱 | 云服务器 | 建站服务 | 服务器租用托管 | 企业短信 | 企业服务
广东时代互联科技有时代互联代理客户服务中心 全国统一热线:4006-123-688IDC售后电话:0756- 3810536欢迎您来到时代互联客户服务中心!
客服首页
帮助中心
下载中心
时代优势
优质服务
请输入您的问题:
     
帮助中心分类
 
 
主页 > 帮助中心 > 虚拟主机 > 数据库使用指南 > SQL Server 2008数据库中的新数据类型
SQL Server 2008数据库中的新数据类型
作者:佚名   文章来源:互联网   点击数:   更新时间:2008-10-23
        对于关系型数据库来说,表现树状的层次结构始终是一个问题。微软在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来获得树状结构的合适示例。事实上,与它有关的所有东西都更像是一些命令,而不是基于集合的操作。



分享到:
  • 上一篇:DB2数据库常用命令集:部分数据库维护命令

  • 下一篇:Oracle新手最常碰到的6个错误及解决方案
  • mimeograph 打印本文 closed 关闭窗口

    关于我们 | 联系我们 | 交费确认 | 友情链接 | 诚征英才
    中华人民共和国
    增值电信业务经营许可证
    粤B2-20042046
    Copyright © 2000-2013 Todaynic.com,Inc. All rights reserved
    时代互联 2000-2020 版权所有 严禁复制