九、數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
1.DBMS的目標(biāo)
(1)用戶界面友好 對(duì)一個(gè)實(shí)用DBMS來(lái)說(shuō),用戶界面的質(zhì)量直接影響其生命力。DBMS的用戶接口應(yīng)面向應(yīng)用,采用適合最終用戶的交互式、表格式、菜單式、窗口式等界面形式,以方便使用和保持靈活性。一般地說(shuō),用戶界面應(yīng)具有可靠性、簡(jiǎn)單性、靈活性和立即反饋等特性。
(2)功能完備 DBMS功能隨系統(tǒng)的規(guī)模的大小而異。大型DBMS功能齊全,小型DBMS功能弱一些。DBMS主要功能包括數(shù)據(jù)定義、數(shù)據(jù)庫(kù)數(shù)據(jù)存取、事務(wù)控制、數(shù)據(jù)庫(kù)組織和存儲(chǔ)管理、數(shù)據(jù)庫(kù)安全保護(hù)等等。我們?cè)谙旅嬗懻撨@些功能的內(nèi)容。
(3)效率高 系統(tǒng)效率包括三個(gè)方面:一是計(jì)算機(jī)系統(tǒng)內(nèi)部資源的使用效率。能充分利用資源(包括存儲(chǔ)空間、設(shè)備、CPU等),并注意使各種資源負(fù)載均衡以提高整個(gè)系統(tǒng)的效率,二是DBMS本身的運(yùn)行效率。三是用戶的生產(chǎn)率。這是指用戶學(xué)習(xí)、使用DBMS和在DBMS基礎(chǔ)上開發(fā)的應(yīng)用系統(tǒng)的效率。
2.DBMS的基本功能
(1)數(shù)據(jù)庫(kù)定義 對(duì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)進(jìn)行描述,包括外模式、模式、內(nèi)模式的定義;數(shù)據(jù)庫(kù)完整性的定義;安全保密定義(如用戶口令、級(jí)別、存取權(quán)限);存取路徑(如索引)的定義。這些定義存儲(chǔ)在數(shù)據(jù)字典(亦稱為系統(tǒng)目錄)中,是DBMS運(yùn)行的基本依據(jù)。為此,提供數(shù)據(jù)定義語(yǔ)言DDL。
(2)數(shù)據(jù)存取 提供用戶對(duì)數(shù)據(jù)的操縱功能,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的檢索、插入、修改和刪除。一個(gè)好的DBMS應(yīng)該提供功能強(qiáng)易學(xué)易用的數(shù)據(jù)操縱語(yǔ)言(DML)、方便的操作方式和較高的數(shù)據(jù)存取效率。DML有兩類:一類是宿主型語(yǔ)言,一類是自含型語(yǔ)言。前者的語(yǔ)句不能獨(dú)立使用而必須嵌入某種主語(yǔ)言,如C語(yǔ)言、COBOL語(yǔ)言中使用。而后者可以獨(dú)立使用,通常以供終端用戶交互使用和批處理方式兩種形式使用。
(3)數(shù)據(jù)庫(kù)運(yùn)行管理 這是指DBMS運(yùn)行控制、管理功能。包括多用戶環(huán)境下的并發(fā)控制、安全性檢查和存取權(quán)限控制、完整性檢查和執(zhí)行、數(shù)據(jù)加密、運(yùn)行日志的組織管理、事務(wù)的管理和自動(dòng)恢復(fù)(保證事務(wù)的正確性),這些功能保證了數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行。
(4)數(shù)據(jù)組織、存儲(chǔ)和管理 DBMS要分門別類地組織、存儲(chǔ)各類數(shù)據(jù),包括數(shù)據(jù)字典(亦稱系統(tǒng)目錄)、用戶數(shù)據(jù)、存取路徑等等。要確定以何種文件結(jié)構(gòu)和存取方式在存儲(chǔ)級(jí)上組織這些數(shù)據(jù),如何實(shí)現(xiàn)數(shù)據(jù)之間的聯(lián)系。數(shù)據(jù)組織和存儲(chǔ)的基本目標(biāo)是提高存儲(chǔ)空間利用率,選擇合適的存取方法確保較高存取(如隨機(jī)查找、順序查找、增、刪、改)效率。
(5)數(shù)據(jù)庫(kù)的建立和維護(hù) 包括數(shù)據(jù)庫(kù)的初始建立、數(shù)據(jù)的轉(zhuǎn)換、數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)、數(shù)據(jù)庫(kù)的重組織和重構(gòu)造以及有性能監(jiān)測(cè)分析等功能。
(6)其它功能 包括DBMS與網(wǎng)絡(luò)中其它軟件系統(tǒng)的通信功能;一個(gè)DBMS與另一個(gè)DBMS或文件系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換功能等。
3.DBMS與操作系統(tǒng)
通常DBMS是建立在操作系統(tǒng)環(huán)境之上的。根據(jù)具體操作系統(tǒng)的特點(diǎn),DBMS可以用不同的方法利用操作系統(tǒng)的基本功能來(lái)實(shí)現(xiàn)DBMS。一般有下面3類方法:
(1)共享模塊法
(2)分離進(jìn)程法
(3)和操作系統(tǒng)融合
4.DBMS程序模塊的組成
作為一個(gè)龐大的系統(tǒng)軟件,DBMS由眾多程序模塊組成,它們分別實(shí)現(xiàn)DBMS復(fù)雜而繁多的功能。數(shù)據(jù)庫(kù)定義方面 有DDL翻譯處理程序(包括外模式、模式、存儲(chǔ)模式處理程序)、保密定義處理程序(如授權(quán)定義處理程序)、完整性約束定義處理程序等。這些程序接收相應(yīng)的定義,進(jìn)行語(yǔ)法、語(yǔ)義檢查,把它們翻譯為內(nèi)部格式存儲(chǔ)在數(shù)據(jù)字典中。DDL翻譯程序還根據(jù)模式定義負(fù)責(zé)建立數(shù)據(jù)庫(kù)的框架(即形式一個(gè)空庫(kù)),等待裝入數(shù)據(jù)。數(shù)據(jù)庫(kù)操縱方面 有DML處理程序、終端查詢語(yǔ)言解釋程序、數(shù)據(jù)存取程序、數(shù)據(jù)更新程序等。DML處理程序或終端查詢語(yǔ)言解釋程序?qū)τ脩魯?shù)據(jù)操縱請(qǐng)求進(jìn)行語(yǔ)法、語(yǔ)義檢查、由數(shù)據(jù)存取或更新程序完成對(duì)數(shù)據(jù)庫(kù)的存取操作。數(shù)據(jù)庫(kù)運(yùn)行管理方面 有系統(tǒng)初啟程序,負(fù)責(zé)初始化DBMS、建立DBMS的系統(tǒng)緩沖區(qū)、系統(tǒng)工作區(qū) 打開數(shù)據(jù)字典等等。還有安全性控制、完整性檢查、并發(fā)控制、事務(wù)管理、運(yùn)行日志管理等程序模塊,在數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中監(jiān)視著對(duì)數(shù)據(jù)庫(kù)的所有操作,控制管理數(shù)據(jù)庫(kù)資源,處理多用戶的并發(fā)操作等。它們一方面保證用戶事務(wù)的正常運(yùn)行,一方面保證數(shù)據(jù)庫(kù)的安全性和完整性。數(shù)據(jù)庫(kù)組織、存儲(chǔ)和管理方面 有文件讀寫與維護(hù)程序、存取路徑(如索引)管理程序、緩沖區(qū)管理程序(包括緩沖區(qū)讀、寫、淘汰等模塊),這些程序負(fù)責(zé)維護(hù)數(shù)據(jù)庫(kù)的數(shù)據(jù)和存取路徑,提供有效的存取的方法。數(shù)據(jù)庫(kù)建立、維護(hù)和其它。有數(shù)據(jù)庫(kù)初始數(shù)據(jù)裝入程序、轉(zhuǎn)儲(chǔ)程序、恢復(fù)程序、數(shù)據(jù)庫(kù)重構(gòu)造程序、數(shù)據(jù)轉(zhuǎn)換程序、通信程序等。DBMS的這些組成模塊互相聯(lián)系,互相依賴,共同完成DBMS復(fù)雜的功能。這些模塊之間的聯(lián)系有一定的層次關(guān)系。
5.DBMS的層次結(jié)構(gòu)
和操作系統(tǒng)一樣,可以也應(yīng)該將DBMS劃分成若干層次。許多DBMS實(shí)際上就是分層實(shí)現(xiàn)的。最上層是應(yīng)用層,位于DBMS核心之處。它處理的對(duì)象包括各種各樣的數(shù)據(jù)庫(kù)應(yīng)用,如用宿主語(yǔ)言編寫的應(yīng)用程序、終端用戶通過(guò)應(yīng)用接口(如FORMS)發(fā)出的事務(wù)請(qǐng)求等。該層是DBMS的最終用戶和應(yīng)用程序的界面層。第二層是語(yǔ)言翻譯處理層。它處理的對(duì)象是數(shù)據(jù)庫(kù)語(yǔ)言,如SQL。提供的數(shù)據(jù)接口是關(guān)系、視圖,即元組的集合。其功能是對(duì)數(shù)據(jù)庫(kù)語(yǔ)言的各類語(yǔ)句進(jìn)行語(yǔ)法分析、視圖轉(zhuǎn)換、授權(quán)檢查、完整性檢查、查詢優(yōu)化等。通過(guò)對(duì)下層基本模塊的調(diào)用,生成可執(zhí)行代碼。這些代碼的運(yùn)行,即可完成數(shù)據(jù)庫(kù)語(yǔ)句的功能要求。第三層是數(shù)據(jù)存取層。該層處理的對(duì)象是單個(gè)元組。它把上層的集合操作轉(zhuǎn)化為單記錄操作。執(zhí)行掃描、排序、元組的查找、插入、修改、刪除、封鎖等基本操作。完成數(shù)據(jù)記錄的存取、存取路徑維護(hù)、并發(fā)控制、事務(wù)管理等工作。第四層是數(shù)據(jù)存儲(chǔ)層。該層處理的對(duì)象是數(shù)據(jù)頁(yè)和系統(tǒng)緩沖區(qū),執(zhí)行文件的邏輯打開、關(guān)閉、讀頁(yè)、寫頁(yè)、緩沖區(qū)讀和寫、頁(yè)面淘汰等操作,完成緩沖區(qū)管理、內(nèi)外存交換、外存管理等功能。操作系統(tǒng)是DBMS的基礎(chǔ),它處理的對(duì)象是數(shù)據(jù)文件的物理塊。執(zhí)行物理文件的讀寫操作,保證DBMS對(duì)數(shù)據(jù)邏輯上的讀寫真實(shí)地映射到物理文件上。操作系統(tǒng)提供的存取原語(yǔ)和基本的存取方法通常作為和DBMS存儲(chǔ)層的接口。
6.語(yǔ)言處理
語(yǔ)言翻譯處理層的任務(wù)就是把用戶在這兩種方式下提交給DBMS的數(shù)據(jù)庫(kù)語(yǔ)句轉(zhuǎn)換成對(duì)DBMS內(nèi)層可執(zhí)行的基本存取模塊的調(diào)用序列。數(shù)據(jù)庫(kù)語(yǔ)言通常包括DDL,DML,DCL三部分語(yǔ)句。DDL語(yǔ)句處理相對(duì)獨(dú)立和簡(jiǎn)單。DML和DCL則較為復(fù)雜。具體來(lái)說(shuō),對(duì)DDL語(yǔ)句,語(yǔ)言翻譯處理層首先把它翻譯成內(nèi)部表示,然后把它存儲(chǔ)在系統(tǒng)的數(shù)據(jù)字典中。對(duì)DCL語(yǔ)句的定義部分,如安全保密定義、存取權(quán)限定義、完整性約束條件定義等處理與DDL相同。在RDBMS中數(shù)據(jù)字典通常采用和普通數(shù)據(jù)同樣的表示方式。數(shù)據(jù)字典包括關(guān)系定義表、屬性表、視圖表、視圖屬性表、視圖表達(dá)式表、用戶表、存取權(quán)限表、……。
(1)解釋方法一些數(shù)據(jù)庫(kù)系統(tǒng)(如dBASEⅢ)對(duì)上述方法進(jìn)行了改進(jìn),通過(guò)盡量推遲聚束過(guò)程來(lái)贏得數(shù)據(jù)獨(dú)立性。具體做法是:直到執(zhí)行前,數(shù)據(jù)庫(kù)DML語(yǔ)句都以原始字符串的形式保存。隨著數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展,這種方法已逐步為預(yù)編譯技術(shù)所取代。
(2)預(yù)編譯方法已經(jīng)看到,將聚束過(guò)程提前,固然可達(dá)到系統(tǒng)的高效率,但失去了數(shù)據(jù)庫(kù)的一個(gè)主要優(yōu)點(diǎn)———數(shù)據(jù)獨(dú)立性;將聚束時(shí)間推遲,贏得了數(shù)據(jù)性,卻增加了執(zhí)行高效率的代價(jià)。預(yù)編譯方法就是為了克服它們的缺點(diǎn),保持兩者的優(yōu)點(diǎn)而提出的。其基本思想是,在用戶提供了DML語(yǔ)句后,在運(yùn)行前對(duì)它進(jìn)行翻譯處理,保存產(chǎn)生好的執(zhí)行代碼,運(yùn)行時(shí)加以執(zhí)行。但是,使用這種方法會(huì)遇到這樣的問(wèn)題:在聚束過(guò)程中進(jìn)行優(yōu)化所依據(jù)的條件可能在運(yùn)行前已不存在,或者數(shù)據(jù)結(jié)構(gòu)被修改,因而導(dǎo)致已作出的規(guī)劃在執(zhí)行時(shí)不再有效。例如,假設(shè)在聚束過(guò)程中決定使用某一索引來(lái)加快存取速度,而在程序編譯完成之后,運(yùn)行之前,該索引被刪除了。那么,運(yùn)行時(shí)就會(huì)出現(xiàn)不可預(yù)測(cè)的現(xiàn)象。為了解決這類問(wèn)題,采用了重編譯方法。即當(dāng)數(shù)據(jù)庫(kù)中某些成分的改變而使一些程序的編譯結(jié)果無(wú)效時(shí),再對(duì)它們執(zhí)行一次編譯。重編譯可在不同時(shí)刻進(jìn)行。為了提高整個(gè)系統(tǒng)的效率,不應(yīng)在數(shù)據(jù)庫(kù)某一成分改變后就馬上對(duì)受影響的那些源程序重編譯,較好的方法是將受影響的編譯結(jié)果置“無(wú)效”標(biāo)志,在其被執(zhí)行時(shí)才進(jìn)行自動(dòng)重編譯。自動(dòng)重編譯技術(shù)使得編譯方法既擁有了編譯時(shí)進(jìn)行束縛所帶來(lái)的高效率,又具備了執(zhí)行時(shí)束縛所帶來(lái)的數(shù)據(jù)獨(dú)立性。實(shí)踐證明,預(yù)編譯方法的效率比其它方法高兩倍以上。
7.數(shù)據(jù)存取層
數(shù)據(jù)存取層介于語(yǔ)言處理層和數(shù)據(jù)存儲(chǔ)之間。它向上提供單元組接口,即導(dǎo)航式的一次一個(gè)元組的存取操作。向下則以系統(tǒng)緩沖區(qū)的存儲(chǔ)器接口作為實(shí)現(xiàn)基礎(chǔ)。
(1)提供一次一個(gè)元組的查找、插入、刪除、修改等基本操作。
(2)提供元組查找所循的存取路徑以及對(duì)存取路徑的維護(hù)操作。如對(duì)索引記錄的查找、插入、刪除、修改。
(3)對(duì)記錄和存取路徑的封鎖、解鎖操作。
(4)日志文件的登記和讀取操作。
(5)輔助操作。如掃描、合并/排序,其操作對(duì)象有關(guān)系、有序表、索引等。為了完成上述功能,通常把存取層又劃分為若干功能子系統(tǒng)加以實(shí)現(xiàn)。
8.緩沖區(qū)管理
數(shù)據(jù)存取層的下面是數(shù)據(jù)存儲(chǔ)層(簡(jiǎn)稱存儲(chǔ)層)。存儲(chǔ)層的主要功能是存儲(chǔ)管理。包括緩沖區(qū)管理、內(nèi)外存交換、外存管理等。其中緩沖管理是最主要的。存儲(chǔ)層向存取層提供的接口是由定長(zhǎng)頁(yè)面組成的系統(tǒng)緩沖區(qū)。系統(tǒng)緩沖區(qū)的設(shè)立是出于兩方面的原因:一是它把存儲(chǔ)層以上各系統(tǒng)成分和實(shí)在的外存設(shè)備隔離。外存設(shè)備的變更不會(huì)影響其它系統(tǒng)成分,使DBMS具有設(shè)備獨(dú)立性。二是提高存取效率。DBMS利用系統(tǒng)緩沖區(qū)滯留數(shù)據(jù)。當(dāng)存取層需要讀取數(shù)據(jù)時(shí)存儲(chǔ)子系統(tǒng)首先到系統(tǒng)緩沖區(qū)中查找。只有當(dāng)緩沖區(qū)不存在該數(shù)據(jù)時(shí)才真正從外存讀入該數(shù)據(jù)所在的頁(yè)面。當(dāng)存取層寫回一元組到數(shù)據(jù)庫(kù)中時(shí),存儲(chǔ)子系統(tǒng)并不把它立即寫回外存,僅把該元組所在的緩沖區(qū)頁(yè)面作一標(biāo)志,表示可以釋放。只有當(dāng)該用戶事務(wù)結(jié)束或結(jié)束緩沖區(qū)已滿需要調(diào)入新頁(yè)時(shí)才按一定的淘汰策略把緩沖區(qū)中已有釋放標(biāo)志的頁(yè)面寫回外存。這樣可以減少內(nèi)外存交換的次數(shù),提高存取效率。系統(tǒng)緩沖區(qū)可由內(nèi)存或虛存組成。由于內(nèi)存空間緊張,緩沖區(qū)的大小、緩沖區(qū)內(nèi)存和虛存部分的比例要精心設(shè)計(jì)。針對(duì)不同的應(yīng)用和環(huán)境按一定的模型進(jìn)行調(diào)整。既不能讓緩沖區(qū)占據(jù)太大內(nèi)存空間,也不能因空間太小而頻頻缺頁(yè)調(diào)頁(yè),造成“抖動(dòng)”,影響效率。緩沖區(qū)由控制信息和若干定長(zhǎng)頁(yè)面組成。緩沖區(qū)管理模塊向上層提供的操作是緩沖區(qū)的讀(READBUF)、寫(WRITEBUF)。緩沖區(qū)內(nèi)部的管理操作有:查找頁(yè)、申請(qǐng)頁(yè)、淘汰頁(yè)。緩沖區(qū)管理調(diào)用OS的操作有:讀(READ)、寫(WEITE)。
9.數(shù)據(jù)庫(kù)的物理組織
數(shù)據(jù)庫(kù)是大量數(shù)據(jù)的有結(jié)構(gòu)的綜合性的集合,如何將這樣一個(gè)龐大的數(shù)據(jù)集合以最優(yōu)的形式組織起來(lái)存放在外存上是一個(gè)非常重要的問(wèn)題。所謂“優(yōu)”應(yīng)包括兩方面:一是存儲(chǔ)效率高,節(jié)省存儲(chǔ)空間;二是讀取效率高,速度快、代價(jià)小。數(shù)據(jù)庫(kù)實(shí)現(xiàn)的基礎(chǔ)是文件,對(duì)數(shù)據(jù)庫(kù)的任何操作最終要轉(zhuǎn)化為對(duì)文件的操作。所以在數(shù)據(jù)庫(kù)物理組織中,基本的問(wèn)題是如何設(shè)計(jì)文件組織或者利用操作系統(tǒng)提供的基本的文件組織方法。但是,在數(shù)據(jù)庫(kù)中表和文件不必具有一一對(duì)應(yīng)關(guān)系。這和操作系統(tǒng)中不一樣。DBMS可以建立只能自己讀寫的文件,在其中存儲(chǔ)多個(gè)表的數(shù)據(jù)。數(shù)據(jù)系統(tǒng)是文件系統(tǒng)的發(fā)展。文件系統(tǒng)中每個(gè)文件存儲(chǔ)同質(zhì)實(shí)體的數(shù)據(jù),各文件是孤立的,沒有體現(xiàn)實(shí)體之間的聯(lián)系。數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的物理組織必須體現(xiàn)實(shí)體之間的聯(lián)系,支持?jǐn)?shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)———各種數(shù)據(jù)模型。因此數(shù)據(jù)庫(kù)中要存儲(chǔ)4個(gè)方面的數(shù)據(jù):數(shù)據(jù)描述。即數(shù)據(jù)外模式、模式、內(nèi)模式。數(shù)據(jù)本身。數(shù)據(jù)之間的聯(lián)系。存取路徑。這4個(gè)方面的數(shù)據(jù)內(nèi)容都要采用一定的文件組織方式組織、存儲(chǔ)起來(lái)。
(1)數(shù)據(jù)字典(DD)的組織 有關(guān)數(shù)據(jù)的描述存儲(chǔ)在數(shù)據(jù)庫(kù)的數(shù)據(jù)字典中。數(shù)據(jù)字典的特點(diǎn)是數(shù)據(jù)量比較小(與數(shù)據(jù)本身比)、使用頻繁,因?yàn)槿魏螖?shù)據(jù)庫(kù)操作都要參照數(shù)據(jù)字典的內(nèi)容。數(shù)據(jù)字典在網(wǎng)狀、層次數(shù)據(jù)中常常用一個(gè)特殊的文件來(lái)組織。所有關(guān)于數(shù)據(jù)的描述信息存放在一個(gè)文件中。
(2)數(shù)據(jù)及數(shù)據(jù)聯(lián)系的組織 關(guān)于數(shù)據(jù)自身的組織,DBMS可以根據(jù)處理的要求自己設(shè)計(jì)文件結(jié)構(gòu),也可以從操作系統(tǒng)提供的文件結(jié)構(gòu)中選擇合適的加以實(shí)現(xiàn)。目前,操作系統(tǒng)提供的常用文件結(jié)構(gòu)有:順序文件、索引文件、索引順序文件、HASH文件(雜湊文件)和B樹類文件等等。數(shù)據(jù)庫(kù)中數(shù)據(jù)組織與數(shù)據(jù)之間聯(lián)系是緊密結(jié)合的。在數(shù)據(jù)的組織和存儲(chǔ)中必須直接或間接、顯式或隱含地體現(xiàn)數(shù)據(jù)之間的聯(lián)系,這是數(shù)據(jù)庫(kù)物理組織中主要考慮和設(shè)計(jì)的內(nèi)容。關(guān)系數(shù)據(jù)庫(kù)中實(shí)現(xiàn)了數(shù)據(jù)表示的單一性。實(shí)體及實(shí)體之間的聯(lián)系都用一種數(shù)據(jù)結(jié)構(gòu)———“表”來(lái)表示。在數(shù)據(jù)庫(kù)的物理組織中,每一個(gè)表通?梢詫(duì)應(yīng)一種文件結(jié)構(gòu)。因此數(shù)據(jù)和數(shù)據(jù)之間的聯(lián)系兩者組織方式相同。
(3)存取路徑的組織 關(guān)系數(shù)據(jù)庫(kù)中,存取路徑和數(shù)據(jù)是分離的,對(duì)用戶是隱蔽的。存取路徑可以動(dòng)態(tài)建立、刪除。存取路徑的物理組織通常采用B樹類文件結(jié)構(gòu)和HASH文件結(jié)構(gòu)。在一個(gè)關(guān)系上可以建立若干個(gè)索引。有的系統(tǒng)支持組合屬性索引,即在兩個(gè)或兩個(gè)以上的屬性上建立索引。索引可以由用戶用CRETR INDEX語(yǔ)句建立,用DROP INDEX語(yǔ)句刪除。在執(zhí)行查詢時(shí),DBMS查詢優(yōu)化模塊也會(huì)根據(jù)優(yōu)化策略自動(dòng)地建立索引,以提高查詢效率。由此可見,關(guān)系數(shù)據(jù)庫(kù)中存取路徑的建立是十分靈活的。
相關(guān)推薦:
2016計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)復(fù)習(xí)重難點(diǎn)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |