更多:2011年軟考數(shù)據(jù)庫系統(tǒng)工程師知識點(diǎn)精講匯總
四、數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)
數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)不同于一般文件系統(tǒng)的存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)庫數(shù)據(jù)的特點(diǎn)是各種記錄型之間彼此有聯(lián)系,數(shù)據(jù)是結(jié)構(gòu)化的。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不僅涉及每種記錄型的記錄如何存儲(chǔ),而且要使數(shù)據(jù)的存儲(chǔ)反映各種記錄型之間的聯(lián)系。在DB多級模式中引入內(nèi)模式(存儲(chǔ)模式)的主要目的是使模式的數(shù)據(jù)結(jié)構(gòu)的描述同它的存儲(chǔ)表示的描述分開,以致DBA為了協(xié)調(diào)數(shù)據(jù)庫性能而對數(shù)據(jù)庫數(shù)據(jù)的存儲(chǔ)方法進(jìn)行修改時(shí),可不必修改模式,以提高數(shù)據(jù)庫的物理獨(dú)立性。在各個(gè)數(shù)據(jù)庫管理系統(tǒng)中,對內(nèi)模式的定義功能各不相同。在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中有些DDL語句可影響數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)。在DBMS中各級模式的存儲(chǔ)結(jié)構(gòu)是恒定的或唯一的,而數(shù)據(jù)庫內(nèi)容(或其記錄)的存儲(chǔ)方式是不唯一的。數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)的好壞直接影響系統(tǒng)的性能。在存儲(chǔ)結(jié)構(gòu)中主要是涉及存儲(chǔ)記錄的設(shè)計(jì)。存儲(chǔ)記錄與概念記錄之間具有對應(yīng)關(guān)系,如果存儲(chǔ)記錄與概念記錄之間具有一一對應(yīng)關(guān)系,在這種情況下存儲(chǔ)記錄的設(shè)計(jì)就比較簡單,不需要進(jìn)一步討論。概念記錄是指在邏輯結(jié)構(gòu)中的記錄。但當(dāng)一個(gè)概念記錄對應(yīng)多個(gè)不同類型的存儲(chǔ)記錄時(shí),存在如何設(shè)計(jì)存儲(chǔ)記錄的問題。對于這樣的概念記錄,其存儲(chǔ)記錄可以有以下幾種設(shè)計(jì):
1.順序組織
將存儲(chǔ)記錄設(shè)計(jì)成與概念記錄一一對應(yīng),按SNO大小(或按記錄到來)的順序?qū)⒂涗浗M成一個(gè)順序組織的文件。這樣組織的優(yōu)點(diǎn)是結(jié)構(gòu)簡單,缺點(diǎn)是會(huì)浪費(fèi)存儲(chǔ)空間。
2.順序帶鏈的組織
順序帶鏈組織允許記錄中帶有指針(Pointer),這樣可以大大節(jié)省存儲(chǔ)空間。
3.帶次關(guān)鍵字索引的順序組織
為了適應(yīng)對多項(xiàng)內(nèi)容的檢索,可以建立索引文件,上述組織可改為帶次關(guān)鍵字索引的順序組織。
4.多表組織
在次關(guān)鍵字索引中,由于一個(gè)次關(guān)鍵字值對應(yīng)于多個(gè)記錄值,它們的個(gè)數(shù)是不固定的,所以對應(yīng)的指針數(shù)目是可變的。這種可變性給管理帶來困難,為了解決這個(gè)困難,引入了多表組織。多表組織的實(shí)現(xiàn)思想比較簡單,在索引中多個(gè)指針分散存放在每個(gè)記錄值中,索引項(xiàng)中的指針指向第一個(gè)記錄,在第一個(gè)記錄中的指針指向第二個(gè)記錄等等。
5.完全倒排組織
在一個(gè)記錄型中,對主關(guān)鍵字以外的數(shù)據(jù)項(xiàng)都建立索引,這樣的組織稱之為完全倒排組織。
6.Hash定址組織
對于每一個(gè)存儲(chǔ)記錄值存放在數(shù)據(jù)庫的什么地方,可通過對該記錄的主關(guān)鍵字值的雜湊函數(shù)計(jì)算得出。這種組織為Hash定址組織。雜湊函數(shù)種類很多,如質(zhì)數(shù)除余法、基數(shù)轉(zhuǎn)換法、平方取中法、折疊法、位移法及各位數(shù)字分析法等等。關(guān)鍵是如何選擇一個(gè)雜湊函數(shù),盡可能避免發(fā)生碰撞。對于不同的主關(guān)鍵字值通過計(jì)算而得到同一個(gè)地址的映象,稱之為碰撞。
7.聯(lián)系的存儲(chǔ)
在關(guān)系數(shù)據(jù)庫中,通過外來關(guān)鍵字(Foreign Key)來表示概念記錄之間的聯(lián)系。例如,為了表達(dá)學(xué)生和學(xué)校的聯(lián)系,可以在學(xué)生記錄中增加外來關(guān)鍵字“學(xué)校號”來表示聯(lián)系。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |