【正文】
? 記錄首部 當(dāng)設(shè)計(jì)記錄的格式的時(shí)候,必然會(huì)引出另一個(gè)問題:通常在記錄中需要保存一些信息,而這些信息不是任何字段的值。 CREATE TABLE StudentInfor ( number int , name CHAR(6) , age int , address CHAR(20) , ?? ) 記錄 字段被組裝成定長或變長的集合,成為“記錄”; ? 定長記錄的構(gòu)造 元組由記錄表示,而記錄由上述所討論的各種字段組成。既然關(guān)系是元組的集合,元組與記錄或 “結(jié)構(gòu)”( C或 C++術(shù)語)相似,可以設(shè)想每一個(gè)元組在磁盤中作為一條記錄來存儲(chǔ)。然后,考察字段如何組裝成存儲(chǔ)系統(tǒng)中更大的元素:記錄、塊和文件 字段 屬 性需要用定長或變長的字節(jié)序列表示,稱作“字段”; 可以用下式所示的 CREATE TABLE 語句在 SQL系統(tǒng)中聲明一個(gè)關(guān)系。 2 數(shù)據(jù)庫理論 數(shù)據(jù)元素的表示 首先,研究一下最基本的數(shù)據(jù)元素的表示,即關(guān)系數(shù)據(jù)庫系統(tǒng)中的屬性值的表示。 MyDB 是一個(gè)面向教學(xué)用的 DBMS,這是必須首先堅(jiān)持的,同時(shí)亦對(duì) DBMS 的存儲(chǔ)管理、 SQL 語言感興趣。 如果個(gè)人想設(shè)計(jì)并實(shí) 現(xiàn)一個(gè)商用的數(shù)據(jù)庫基本上是不可能的,復(fù)雜的技術(shù)細(xì)節(jié)會(huì)把數(shù)據(jù)庫的最基本的理論完全掩蓋。特別是隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,現(xiàn)代主流的數(shù)據(jù)庫廠商紛紛把網(wǎng)絡(luò)特性集成系統(tǒng)之中,甚至還出現(xiàn)了專門應(yīng)用于網(wǎng)絡(luò)環(huán)境的分布式數(shù)據(jù)庫管理系統(tǒng)。 MyDB 的設(shè)計(jì)目標(biāo) 先看看國際上有關(guān)數(shù)據(jù)庫發(fā)展的情況。同時(shí)數(shù)據(jù)庫的研制是一件很基礎(chǔ)的工作,是研究面向 對(duì)象數(shù)據(jù)庫、分布式數(shù)據(jù)庫、知識(shí)庫以及智能數(shù)據(jù)庫的基礎(chǔ)。通過參加研制數(shù)據(jù)庫的工作,可以加深對(duì)數(shù)據(jù)庫技術(shù)的理解,弄清其來龍去脈,提高技術(shù)水平,從而改進(jìn)數(shù)據(jù)庫教學(xué)質(zhì)量。所以數(shù)據(jù)庫是介于用戶程序和OS之間的一個(gè)中間媒介,是使得物理數(shù)據(jù)庫與用戶程序相互獨(dú)立的軟件系統(tǒng)。大一點(diǎn)的數(shù)據(jù)庫如 IMS 花費(fèi)幾千人年,系統(tǒng) R的研制花費(fèi)了 120 個(gè)專家人年以及幾千程序員 人年, SYSTEM2020 花 費(fèi) 400 人年。它涉及的面非常廣泛,需要軟件、硬件及設(shè)備方面的知識(shí);需要一定的物質(zhì)條件;需要研制人員的豐富的編程經(jīng)驗(yàn)和精深的軟件技術(shù);需要科學(xué)的管理方法和科學(xué)先進(jìn)的測試技術(shù)。20世紀(jì) 80 年代中期數(shù)據(jù)庫技術(shù)進(jìn)入一個(gè)新的層次, 智能數(shù)據(jù)庫、演繹數(shù)據(jù)庫、專家數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、工程數(shù)據(jù)庫、多介質(zhì)數(shù)據(jù)庫、并行數(shù)據(jù)庫、實(shí)時(shí)數(shù)據(jù)庫等就是當(dāng)代數(shù)據(jù)庫研究的前沿。信息社會(huì)的緊迫需求使數(shù)據(jù)庫技術(shù)成為計(jì)算機(jī)園地中一支最有生命力的新秀。它的出現(xiàn)使得計(jì)算機(jī)的應(yīng)用進(jìn)入了新的時(shí)期,社會(huì)的每個(gè)領(lǐng)域都與計(jì)算機(jī)發(fā)生了聯(lián)系。 因此,無論是從應(yīng)用的角度還是學(xué)習(xí)數(shù)據(jù)庫的理論教學(xué)的角度來看,設(shè)計(jì)與實(shí)現(xiàn)一個(gè)小型的數(shù)據(jù)庫管理系統(tǒng)都是很有必要的。需要一個(gè)能夠真正對(duì)數(shù)據(jù)庫所學(xué)理論進(jìn)行有效的實(shí)踐的數(shù)據(jù)庫管理系統(tǒng)。專業(yè)人員閱讀起來都不會(huì)很容易,更不要說剛讀本科的學(xué)生對(duì)其進(jìn)行修改了,所以收效甚微。 3.用真實(shí)的數(shù)據(jù)庫管理系統(tǒng)來實(shí)踐顯然要好得多。這些實(shí)踐都不過是對(duì)數(shù)據(jù)庫管理系統(tǒng)的使用,根本談不上 了解數(shù)據(jù)庫本身的運(yùn)行機(jī)理。 2.現(xiàn)有對(duì)數(shù)據(jù)庫的實(shí)踐也是流于形式,內(nèi)容膚淺與真實(shí)的數(shù)據(jù)庫管理系統(tǒng)相去甚遠(yuǎn)。 data storage 。 關(guān)鍵詞: MyDB;命令解析;數(shù)據(jù)存儲(chǔ); C 語言 Minidatabase Design and Implementation of Command Interpreter and Data Storage Abstract In this information era, data has been a kind of resource. With the fast development of data getting technology and database technology, people accumulate more and more data. How to manage these data more rational bee more and more important. Minidatabase is to simulate popular database at present and implement data storage, management and querying by inputting mands from mand line. This Minidatabase —— MyDB includes two modules: SQL mand parser and data storage. SQL mand parser takes in change of parsing user mands and operating tables, such as creating a table, deleting a table, inserting elements into table and updating table. The primary function of data storage module is to save and manage user data. The whole system is designed with the idea of modularized programmer and developed with C program language. Key words: MyDB 。 SQL命令解析器負(fù)責(zé)解析用戶命令并完成用戶對(duì)表的創(chuàng)建、刪除、插入、更新等操作;數(shù)據(jù)存儲(chǔ)模塊的主要功能是保存和管理用戶的數(shù)據(jù)。小型數(shù)據(jù)庫就是模擬目前比較流行的一些大型數(shù)據(jù)庫,實(shí)現(xiàn)通過在命令行輸入相應(yīng)命令來對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),管理和查詢。 畢業(yè)設(shè)計(jì) ( 論文 ) 小型數(shù)據(jù)庫 —— 命令解析器、數(shù)據(jù)存儲(chǔ)設(shè)計(jì)與實(shí)現(xiàn) 論文作者姓名: 申請學(xué)位專業(yè): 申請學(xué)位類別: 指導(dǎo)教師姓名(職稱): 論文提交日期: 小型數(shù)據(jù)庫 —— 命令解析器、數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 當(dāng)今時(shí)代,“數(shù)據(jù)”已經(jīng)成為一種資源。隨著各種數(shù)據(jù)獲取技術(shù)和數(shù)據(jù)庫技術(shù)的迅速發(fā)展,人們積累的數(shù)據(jù)越來越多 ,如何更加合理的管理數(shù)據(jù)顯得更加重要。 該小型數(shù)據(jù)庫 MyDB 包括兩大模塊: SQL 命令解析器及數(shù)據(jù)存儲(chǔ)模塊。整個(gè)系統(tǒng)是用 C 語言、采用模塊化的程序設(shè)計(jì)思想實(shí)現(xiàn)的。 mand parse 。 C program language 目 錄 論文總頁數(shù): 24頁 1 引言 ................................................................... 5 數(shù)據(jù)庫課程教學(xué)的現(xiàn)狀 .................................................. 5 研制 DBMS的重要性 .................................................... 5 MyDB的設(shè)計(jì)目標(biāo) ....................................................... 6 2 數(shù)據(jù)庫理論 ............................................................. 6 數(shù)據(jù)元素的表示 ....................................................... 6 .............................................................. 6 .............................................................. 7 ................................................................ 7 查詢編譯器 ........................................................... 7 3 MyDB的實(shí)現(xiàn) ............................................................. 9 記錄的定義 ........................................................... 9 命令解析模塊 ........................................................ 10 詞法分析器 ...................................................... 11 語法分析器 ...................................................... 15 SQL語句的實(shí)現(xiàn) ................................................... 17 基本表模塊 .......................................................... 22 ......................................................... 22 ..................................................... 23 數(shù)據(jù)存儲(chǔ)模塊 ........................................................ 24 結(jié) 論 .................................................................... 25 參考文獻(xiàn) .................................................................. 25 致 謝 .................................................................... 27 聲 明 .................................................................... 28 1 引言 數(shù)據(jù)庫課程教學(xué)的現(xiàn)狀 現(xiàn)在數(shù)據(jù)庫教學(xué)的不足突出地表現(xiàn)在以下幾點(diǎn): 1.普遍只強(qiáng)調(diào)理論,不重視實(shí)踐,在學(xué)習(xí)過程中難以對(duì)概念深刻領(lǐng)悟,課程結(jié)束后就很快把其中許多內(nèi)容給淡忘掉了。比如用 SQL 語言對(duì)數(shù)據(jù)庫進(jìn)行一定的創(chuàng)建查詢操作。而且這些實(shí)踐都太過理想化,完全把底層原理透明化了,這些實(shí)踐充其量只不過是對(duì) SQL語言熟悉而已。但現(xiàn)實(shí)中的數(shù)據(jù)庫管理系統(tǒng)都太過龐大,比如開源的數(shù)據(jù)庫管理系統(tǒng) MYSQL,僅源代碼就達(dá)數(shù)十萬行之多。 以上三點(diǎn)明顯地說明了:“實(shí)踐”在數(shù)據(jù)庫原理教學(xué)中的重要性。但缺少一個(gè)好的教學(xué)用數(shù)據(jù)庫管理系統(tǒng),現(xiàn)有 的教學(xué)用數(shù)據(jù)庫管理系統(tǒng)并不那么適合中國的實(shí)際情況。 研制 DBMS 的重要性 數(shù)據(jù)庫技術(shù)產(chǎn)生于 1970 年前后。數(shù)據(jù)庫技術(shù)聚集了數(shù)據(jù)處理最精華的思想,是管理信息最先進(jìn)的工具。而與人工智能的結(jié)合又使它獲得了新的血液。 數(shù)據(jù)庫管理系統(tǒng)( DBMS)的研制是一件非常復(fù)雜的軟件工程。當(dāng)然由于系統(tǒng)的功能和規(guī)模不一樣,其復(fù)雜程度也相差很大。數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)庫的設(shè)計(jì)不同,前者屬于系統(tǒng)軟件設(shè)計(jì),與機(jī)器世界比較接近,它的基礎(chǔ)是 OS;后者屬于應(yīng)用軟件設(shè)計(jì),與現(xiàn)實(shí)世界更為接近,它的基礎(chǔ)是數(shù)據(jù)庫。 研制數(shù)據(jù)庫對(duì)于從事數(shù)據(jù)庫開發(fā)的科研人員和教學(xué)人員是一件十分有價(jià)值的工作。更重要的是滿足社會(huì)需求。因此,數(shù)據(jù)庫原理一般都作為計(jì)算機(jī)專業(yè)的基礎(chǔ)課程學(xué)習(xí)。隨著計(jì)算機(jī)廣泛而深入地應(yīng)用與社會(huì)各行各業(yè),作為其中重要支柱的系統(tǒng)軟件 —— 數(shù)據(jù)庫變的越來越龐大,功能越來越強(qiáng),而且這種發(fā)展勢頭絲毫不見有放慢的跡象。所有這些數(shù)據(jù)庫的復(fù)雜性給數(shù)據(jù)庫的設(shè)計(jì)帶來很大的挑戰(zhàn)。因此,學(xué)生很難通過商用的數(shù)據(jù)庫學(xué)習(xí)數(shù)據(jù)庫的原理。 總之, MyDB 是一個(gè)基于關(guān)系代數(shù)的、用 C 實(shí)現(xiàn)的、面向教學(xué)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。這是用“字段”來表示的。數(shù)據(jù)庫負(fù)責(zé)表示和存儲(chǔ)由這個(gè)定義描述的關(guān)系。記錄會(huì)占據(jù)某個(gè)磁盤塊(或一部分),在記錄內(nèi)部,對(duì)應(yīng)于關(guān)系的每一個(gè)屬性有一個(gè)字段。最簡單的情況是記錄的所有字段均為定長,則可以將字段連接成記錄。因此有必要在記錄的首部添加相關(guān)信息,如:記 錄長度、字段數(shù)等。 查詢編譯器 查詢處理器需采取三個(gè)主要步驟: 1) 對(duì)使用諸如 SQL 的某種語言書寫的查詢進(jìn)行語法分析,亦即將查詢語句轉(zhuǎn)換成按某種有用方式表示查詢語句結(jié)構(gòu)的語法樹; 2)把語法分析樹轉(zhuǎn)換成代數(shù)關(guān)系表達(dá)式樹(或某種類似標(biāo)記),稱之為邏輯查詢計(jì)劃; 3)邏輯查詢計(jì)劃需轉(zhuǎn)換成物理查詢計(jì)劃,物理查詢計(jì)劃不僅指名了要執(zhí)行的操作,而且也找