資料庫系統原理課程設計總結報告

2021-03-03 22:10:41 字數 4404 閱讀 4480

黑龍江大學計算機科學技術學院

黑龍江大學軟體學院

1、 開發環境

硬體環境:windows xp/win7作業系統

軟體環境:microsoft visual studio 2005

2、 dbms系統架構

如圖2-1所示,通過該類圖可以大致看到所有的類的屬性、行為以及各個類相互之間的關係。

圖2-1 dbms靜態類圖

在執行本系統時,會先通過ganalysis的構造方法對系統進行初始化,包括載入文法和文法的分析表。載入成功後使用者輸入sql語句時main函式會呼叫int ganalysis::analysis_sql(char sql)對輸入的語句進行處理,如果文法分析不通過時返回乙個正數(錯誤出現的位置),main函式則會呼叫void ganalysis::

showerror();來顯示語法錯誤。如果語法分析成功,analysis返回ok(-2), ganalysis會呼叫相應的模組來具體執行sql語句。此時不管具體執行結果如何,都會返回ok,在主函式中再呼叫void ganalysis::

showexecuteresult ();來顯示執行的結果。

如下圖2-2為該系統語法分析失敗時的序列圖,圖2-3為系統語法分析成功時的序列圖:

圖2-2語法分析失敗序列圖

圖2-3 語法分析成功時的系統序列圖

3、dbms主要功能模組

本dbms主要包含6個模組,分別是sql語言的詞法和語法分析功能模組、建立資料庫及資料操作功能模組、索引的建立及刪除模組、查詢功能模組、查詢優化模組、資料庫保護功能模組。在以下的各小節中將會詳細介紹。

3.1 sql語言的詞法和語法分析

(1)功能介紹

該部分利用已有的編譯知識,完成sql語句的詞法和語法分析工作,對使用者輸入的sql語句進行檢驗是否正確。如果輸入正確則進一步做處理,否則指出錯誤的位置。進一步了解dbms中資料字典的作用,並為後續的查詢處理和優化實驗打好基礎。

主要包括的詞法語法分析語句包括:

(1)create table8)create index

(2)drop table9)drop index

(3)alter table10)create view

(4)insert11)drop view

(5)delete12)create user

(6)update13)grant

(7)select14)revoke

(2)相關理論

首先使用詞法分析將語句中各個單詞分離出來,包括關鍵字、識別符號、整數、運算子、界符等;第二步使用語法分析器判別語句中的語法錯誤,即不同中來的單詞搭配錯誤;第三步使用語義分析,校對語義錯誤。

slr語法分析器由輸入、輸出、棧、驅動程式及包含動作(action)和轉移(goto)兩部分的語法分析表構成的。驅動程式對所有的slr語法分析器都是一樣的,不同的語法分析器只是語法分析表有所不同。分析程式每次從輸入緩衝區讀入乙個符號,並使用棧來儲存形如s0x1s1x2s2…xm**的串。

其中**在棧頂,xi是文法符號,si是稱為狀態的符號,每個狀態符號概括了棧中位於它的下面的資訊。棧頂的狀態符號和當前的輸入符號用來檢索語法分析表,以決定移動規約分析的動作。在實際實現中,文法符號不必出現在棧裡。

slr1語法分析的模型如圖3.1-1所示:

圖3.1-1

(3)演算法描述

首先需要對輸入的字串進行詞法分析,先通過函式void strchange(string str,vector &vecstr); 函式對字串進行分割,將str中的單詞、操作符等分成乙個乙個的string型別的字串,並保持在vecstr中。具體的實現演算法如下所示:

void strchange(string str,vector &vecstr)

if(str[i]是運算子)

vecstr.push_back(temp);

temp清空

}else

}//for

if(temp非空)

}對字串進行分割後就可以進行文法分析了。利用函式int analysis::analysis_str(char sql,string &error)對sql語句進行文法分析。

其中函式bool analysis::action_at(int row, std::string vtch, int &num);將第row行符號為vtch的值儲存到引用引數num中,如果action表對應的位置資料無效時將返回false.

函式bool analysis::goto_at(int row,char vnch,int &num)與action函式實現的功能類似。

語法分析時首先把初始狀態s0放在語法分析器的棧頂,把『#『壓入符號棧中。然後執行如下部分的演算法:

for(i=0;i if(!action_at(

分析出錯,返回錯誤位置為第i個單詞;

}if(num>0)

else if(num<0)

if(!goto_at(

返回錯誤位置為i-1個單詞

將num壓入狀態棧,將第num個產生式α→β的左部α壓入符號棧。

}else if(num==0)

}if(i==str.size())

返回出錯位置為i-1個單詞

(4)程式流程圖

對字串分割的函式流程圖如下圖3.1-2所示:

對輸入的sql語句進行文法分析的函式int analysis::analysis_str(char sql,string &error)流程圖如下所示:

(5)測試用例與實驗結果

測試用例:3.1-1:create table stu(id int,name char(20),score int);

測試用例3.1-2:select name,age,address from user;

測試用例3.1-3:alerttt table stu add id int;

測試用例3.1-4:update stu set a='abcd' where a;

3.2建立資料庫及資料操作功能

(1)功能介紹

1、實現建立資料庫表結構的功能。該部分還包括以下幾個功能:

(1)支援整型int、字元型char、變長字元型varchar資料。

(2)以檔案形式儲存基本表。

(3)具有相應的資料字典儲存表名、表的結構等相關資訊。

2、實現輸入資料庫記錄的功能,可以通過sql insert語句向已有的表中插入資料庫記錄。當表不存在時會提示輸入錯誤。

3、實現刪除資料庫記錄的功能,通過delete語句刪除某一條或者符合某一條件的記錄。同時會顯示刪除的記錄個數。

4、實現修改資料庫記錄的功能,該部分通過update語句可以修改符合某一條件的記錄。同時會顯示所修改的記錄個數。

5、實現顯示資料庫結構和內容的功能。

6、實現在已有的關係中新增屬性的功能,利用alert命令可以新增乙個表的屬性。表不存在時會有錯誤提示。

7、實現從已有的關係中刪除屬性的功能利用alert命令可以新增乙個表的屬性。表不存在時會有錯誤提示,當表只剩餘一列時不允許再刪除該屬性可以通過drop語句刪除表。

8、實現刪除表的功能,使用drop命令刪除表,當表不存在時會提示表不存在的錯誤資訊。

(2)相關理論

1、檔案和檔案記錄

資料通常都是以記錄的形式儲存在磁碟上。記錄由一組相關的資料值或資料項排列而成。每個資料項對應於記錄的乙個域,由乙個或幾個位元組組成。

記錄的每個域具有乙個名字和乙個資料型別,如整數、字串等。一組域名字及其對應的資料型別構成了記錄型或記錄格式。檔案是乙個記錄序列。

乙個檔案的所有記錄都具有相同的記錄型。如果乙個檔案的所有記錄都具有相同的長度,這個檔案被稱為定長記錄檔案。如果乙個檔案中的不同記錄可能具有不同的長度,則稱這個檔案為變長記錄檔案。

以下是磁碟上儲存檔案的方法和特點。

連續儲存方法:按照檔案中檔案塊的順序把檔案儲存到連續磁碟塊上。訪問整個檔案的效率高。檔案擴充困難。

鏈結儲存方法:在每個檔案塊中增加乙個指向下乙個檔案塊所在的磁碟塊的位址指標。便於檔案擴充。讀整個檔案的速度很慢。

索引儲存方法:在磁碟上儲存乙個或多個索引塊。每個索引塊包含指向檔案塊的指標。

每個資料庫管理系統都包含乙個稱為資料字典的小型資料庫。

2、資料字典

資料字典用來儲存資料庫中資料物件的描述資訊和資料庫管理系統需要的控制資訊。資料物件的描述資訊包括概念模式、內模式、外模式以及它們之間的映象的描述。資料庫管理系統需要的控制資訊包括查詢優化、安全性檢查、使用者許可權驗證、事務處理、報告生成、約束驗證、資料定義和操縱語言編譯等系統程式模組所需要的資訊。

3、堆檔案的查詢操作

查詢乙個滿足給定條件的記錄:必須從檔案的第乙個記錄開始搜尋,直到發現滿足條件的記錄為止。如果滿足條件的記錄不止乙個,需要搜尋整個檔案。

4、堆檔案的插入操作

堆檔案的頭儲存它的最末乙個磁碟塊的位址。插入乙個記錄時,首先,讀檔案頭,找到最末磁碟塊位址,把最末磁碟塊讀入主儲存器緩衝區;然後,在緩衝區內把新記錄儲存到最末磁碟塊的末尾;最後,把緩衝區中修改過的最末磁碟塊寫回原檔案。

資料庫系統原理課程設計總結報告

黑龍江大學計算機科學技術學院 黑龍江大學軟體學院 1 開發環境 2 dbms系統架構 3 dbms主要功能模組 3.1 sql語言的詞法和語法分析 1 功能介紹 2 相關理論 3 演算法描述 4 程式流程圖 5 測試用例與實驗結果 3.2建立資料庫及資料操作功能 1 功能介紹 2 相關理論 3 演算...

資料庫系統原理課程設計報告

平面設計公司業務管理系統 姓名學號 指導老師 起始時間 2010年3月3日 結束時間 2010年5月28日 目錄第一章概述 3 第二章需求分析 3 第三章概念設計 5 第四章邏輯結構設計 7 第五章主要模組設計與 9 第六章總結 19 第七章參考文獻 20 第一章概述 1.1專案背景 該公司經營平面...

資料庫系統課程設計報告蘇

中北大學 課程設計說明書 資料庫系統課程設計 2010 2011 學年第一學期 學院經濟與管理學院 或者資訊商務學院 專業 資訊管理與資訊系統 學生姓名 第五組 名單附後 班號 08090342x課程設計題目 教務資料庫管理系統設計起迄日期 1 月 10 日 1 月 22 日指導教師 蘇貴影 課程設...