国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

Sql Server 2005中通用數(shù)據(jù)表表達(dá)式

2024-08-31 00:43:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

對(duì)于關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),表現(xiàn)樹(shù)狀的層次結(jié)構(gòu)始終是一個(gè)問(wèn)題。微軟在Sql Server 2005中首次嘗試了解決這個(gè)問(wèn)題,那就是被稱之為通用數(shù)據(jù)表表達(dá)式(Common Table Expressions,CTE)的實(shí)現(xiàn)方式。

 盡管CTE在現(xiàn)有的數(shù)據(jù)庫(kù)架構(gòu)中運(yùn)行良好,微軟找到了一種將此類層次結(jié)構(gòu)作為頭等概念來(lái)使用的方式。因此為了實(shí)現(xiàn)這種效果,他們?cè)赟QL Server 2008中提出了一種“HierarchId”數(shù)據(jù)類型。

在傳統(tǒng)的層次結(jié)構(gòu)中,一條記錄僅僅儲(chǔ)存了一個(gè)指向它父記錄的引用,這使得一條記錄能夠獲得它在層次結(jié)構(gòu)中的相對(duì)位置,而不是絕對(duì)位置。改變某條記錄的父數(shù)據(jù)行引用是一個(gè)原子更新操作,它不會(huì)影響到該記錄的任何子記錄。

一個(gè)HierarchyId類型的字段儲(chǔ)存了記錄在層次結(jié)構(gòu)中的準(zhǔn)確位置。Denny Cherry提供了一個(gè)例子,其中展示了0x、0x58以及0x5AC0三個(gè)值,它們的字符串表現(xiàn)形式分別為“/”,“/1/”和“/1/1/”。這就引發(fā)了有關(guān)一致性和性能方面的問(wèn)題,尤其是父記錄被改變的時(shí)候。Ravi S.Maniam建議在改變父記錄操作不頻繁的情況下使用這種設(shè)計(jì)方式。

與HierarchyId類型同時(shí)出現(xiàn)的還有一系列函數(shù)。GetAncestor和GetDescendant方法可以用來(lái)遍歷樹(shù)。ToString和Parse方法用于HierarchyId類型二進(jìn)制與字符串表現(xiàn)形式之前的轉(zhuǎn)換。有些古怪的是,隨之而來(lái)的還有用于支持BinaryReader與BinaryWriter的一些方法。

再來(lái)回頭看看GetDescendant,這是一個(gè)有些古怪的方法。它實(shí)際上不返回那些子記錄,而是返回那些潛在的子節(jié)點(diǎn)的位置。向樹(shù)中插入一個(gè)新的記錄時(shí),我們必需調(diào)用GetDescendant方法來(lái)獲得指定父記錄的最后一個(gè)子節(jié)點(diǎn)的位置,然后才能獲得緊跟著該位置之后的空隙。

迄今為止還沒(méi)有使用T-SQL來(lái)獲得樹(shù)狀結(jié)構(gòu)的合適示例。事實(shí)上,與它有關(guān)的所有東西都更像是一些命令,而不是基于基于集合的操作。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 封开县| 海口市| 图们市| 象山县| 平江县| 晋宁县| 呼伦贝尔市| 清水河县| 普格县| 本溪| 濮阳县| 屏东市| 依安县| 常宁市| 凤翔县| 承德市| 涡阳县| 夹江县| 高青县| 九台市| 梁河县| 平潭县| 千阳县| 托克逊县| 普宁市| 得荣县| 桦南县| 广州市| 赤峰市| 泽州县| 固安县| 武威市| 琼海市| 洪洞县| 靖边县| 黄浦区| 武强县| 朝阳市| 惠东县| 五莲县| 万宁市|