【正文】
字典是否存在該表?是否讀數(shù)據(jù)文件提示不存在該表找到與“where”后相匹配的數(shù)據(jù)文件并將其刪除結(jié)束開始文本以“update”開始其后為是否有“where”條件無有將數(shù)據(jù)文件中相應(yīng)的內(nèi)容全部改為“set”后的條件找到數(shù)據(jù)文件中符合“where”后條件的元組將該元組相應(yīng)條件改為“set”后信息是否有相應(yīng)的索引文件有無重寫索引文件結(jié)束 (5)測試用例與實驗結(jié)果 測試用例: create table s(s char(9)sname char(8)age int sex char(2)primary key s)create table c(c char(5)ame char(20)teacher char(8)primary key c)create table sc(s char(9)c char(5)grade float primary out key s from s primary out key c from c)實驗結(jié)果: 測試用例: drop table sc 實驗結(jié)果:C:插入元組 測試用例:insert into s values(39。s139。,39。lou39。,21,39。F39。)insert into s values(39。s239。,39。lu39。,20,39。F39。)insert into s values(39。s339。,39。ha39。,22,39。M39。)insert into s values(39。s439。,39。zhang39。,21,39。F39。)insert into s values(39。s539。,39。qian39。,20,39。M39。)insert into s values(39。s639。,39。sun39。,18,39。F39。)insert into s values(39。s739。,39。lisan39。,21,39。F39。)insert into s values(39。s839。,39。qian39。,20,39。M39。)insert into s values(39。s939。,39。wugozi39。,18,39。F39。)insert into c values(39。c139。,39。math39。,39。zhao39。)insert into c values(39。c239。,39。chinese39。,39。qian39。)insert into c values(39。c339。,39。english39。,39。sun39。)insert into c values(39。c439。,39。cs39。,39。li39。)insert into c values(39。c539。,39。java39。,39。zhou39。)insert into c values(39。c639。,39。c++39。,39。wu39。)insert into c values(39。c739。,39。jsp39。,39。zheng39。)insert into c values(39。c839。,39。j2ee39。,39。wang39。)insert into c values(39。c939。,39。asp39。,39。sima39。)insert into sc values(39。s139。,39。c139。,67)insert into sc values(39。s239。,39。c239。,80)insert into sc values(39。s339。,39。c339。,100)insert into sc values(39。s439。,39。c439。,99)insert into sc values(39。s539。,39。c539。,87)insert into sc values(39。s639。,39。c639。,78)insert into sc values(39。s739。,39。c739。,90)insert into sc values(39。s839。,39。c839。,87)insert into sc values(39。s939。,39。c939。,78)實驗結(jié)果:d:刪除元組 測試用例:delete from sc where(=39。s639。)實驗結(jié)果:e:修改元組 測試用例:update sc set score=120 where s=39。s539。 實驗結(jié)果:f:添加屬性 測試用例:Alter table s add school char(20)實驗結(jié)果:g:刪除屬性 測試用例:Alter table drop school(1)功能介紹,記錄完成操作花費的時間,在建立索引前的關(guān)系上執(zhí)行同樣的選擇操作并進行時間代價的比較。,記錄完成操作花費的時間,在建立索引前的關(guān)系上執(zhí)行同樣的選擇操作并進行時間代價的比較。(2)相關(guān)理論默認每個塊有50個字節(jié),數(shù)據(jù)文件中的每個元組有自己的首指針(指向元組首部的文件指針),索引文件中存儲的是屬性域值及其塊號(塊號通過其首指針/50得到)。(3)算法描述針對表的主鍵建立索引文件,找到數(shù)據(jù)文件中要建立索引的屬性域值,并記錄該元組的首指針,將其保存在索引文件中。在索引文件中找到“select”語句中“where”后的條件涉及的屬性(因為是基于主鍵建立的索引,所以只能通過主鍵的索引文件來查找相應(yīng)的信息),記錄索引域后的塊號,將塊號*50就能得到相應(yīng)的文件指針,通過文件指針讀數(shù)據(jù)文件,就能找到相應(yīng)的元組。 找到相應(yīng)的索引文件將其永久刪除(4)程序流程圖開始數(shù)據(jù)字典有該屬性?是找到數(shù)據(jù)文件中要建立索引的屬性域記錄該元組的文件否指針并/50得到塊號一并寫入索引文件結(jié)束 開始查找索引文件中與“where”后條件相符的屬性域值找到?記錄該屬性域值得塊號否塊號*50得到文件指針查找數(shù)據(jù)文件找到該元組,輸出結(jié)束 開始找到該索引文件?是否將該索引文件徹底刪除結(jié)束 (5)測試用例與實驗結(jié)果a:創(chuàng)建索引文件 測試用例:create index index on s 實驗結(jié)果:b:利用索引選擇(1)功能介紹 (允許多條件)(允許多條件) 、投影和連接操作(2)相關(guān)理論(3)算法描述掃描數(shù)據(jù)字典,判斷是否有該表,如果有,則掃描數(shù)據(jù)文件,將數(shù)據(jù)文件中內(nèi)容全部輸出。掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,記錄要投影的屬性是第幾個,掃描數(shù)據(jù)文件,將每個元組中要查詢的屬性輸出。(允許多條件)掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,掃描數(shù)據(jù)文件,利用循環(huán)將滿足“where”后條件的元組選出。(允許多條件)掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,則記錄需要投影的屬性是第幾個,查找數(shù)據(jù)文件,利用循環(huán)將滿足“where”條件的元組找出并屬性相應(yīng)的屬性值。掃描數(shù)據(jù)字典,判斷是否有這兩個表,若有,則查找相關(guān)屬性,將兩個表中的相關(guān)屬性依據(jù)條件進行匹配,若匹配成功,則表示連接成功,輸出連接結(jié)果。 在以上的連接結(jié)果中挑選符合條件的元組輸出。、投影和連接操作 在以上的結(jié)果中選擇要投影的屬性,輸出。(4)程序流程圖開始掃描數(shù)據(jù)字典是否有該表?掃描數(shù)據(jù)文件并全部輸出結(jié)束 開始掃描數(shù)據(jù)字典是否有該表?是否有要投影的屬性否記錄要投影的屬性是第幾個掃描數(shù)據(jù)文件將該屬性值域輸出結(jié)束 (允許多條件)是是否開始掃描數(shù)據(jù)字典是否有該表?是記錄“where”條件并掃描是否掃描數(shù)據(jù)文件有與之匹配的元組?否輸出提示沒有符合條件的元組結(jié)束 表3,43 (允許多條件)開始掃描數(shù)據(jù)字典是否有該表?是記錄要投影的屬性是第幾個否記錄“where”條件并掃描掃描數(shù)據(jù)文件有與之匹配的元組?否是選擇要投影的屬性值域提示沒有符合條件的元組提示沒有符合條件的元組輸出結(jié)束 (5)測試用例與實驗結(jié)果測試用例:select s,sname,age,sex from s where =39。qian39。19 實驗結(jié)果:測試用例:select sname,age,sex from s where =39。s639。==39。li39。 實驗結(jié)果:測試用例: link s,sc base sc 實驗結(jié)果:測試用例: link s,c,sc base sc 實驗結(jié)果:(1)功能介紹在做兩個表連接時,先將需要用到的元組找到,并不做笛卡爾積,這在一定程度上減少了全部選擇的時間。(2)相關(guān)理論在做兩個表連接時,需要名字及類型相同的屬性用一定的條件進行匹配,如果在做笛卡爾積之前就用這些條件把要用到的元組選出來,既省空間又省時間。(3)算法描述首先查看表是否存在,若存在查找涉及到的屬性,記錄“where”后的條件,將兩個表中符合條件的元組都取出,將這些元組做連接。(4)程序流程圖開始是否存在該表?是是否有涉及到的屬性?是否記錄“where”后的條件否將符合條件的元組先選出連接結(jié)束 (1)功能介紹此DBMS系統(tǒng)有兩種用戶:管理員,普通用戶。(2)相關(guān)理論、修改元組時,匹配每個屬性的類型,如果類型及長度輸入有誤,則提示輸入錯誤不寫入數(shù)據(jù)源文件,若符合條件,則查看基于每個屬性是否有索引文件,如果有,則重寫索引文件。,也要重寫相應(yīng)的索引文件。,是否有要查詢的屬性。(3)算法描述例如在做插入元組時,首先查找數(shù)據(jù)字典有沒有待插入的表,如果有,則記錄每個屬性類型及長度,將待插入數(shù)據(jù)與屬性進行一一比對,一旦有一個記錄不符合要求,也無法插入表中。(4)程序流程圖開始文本以“insert”開始查數(shù)據(jù)字典,記錄屬性名及類型掃描待插入的每個屬性與數(shù)據(jù)字典中的屬性比較char()int或float是否匹配或越界是否匹配不匹配或越界都匹配提示屬性類型輸入錯誤寫入數(shù)據(jù)文件尾是否有索引文件有無重寫索引文件結(jié)束 總結(jié)通過對于DBMS系統(tǒng)的模擬,使我對于數(shù)據(jù)庫系統(tǒng)有了更深刻的理解,了解了每個表信息的存儲結(jié)構(gòu),以及數(shù)據(jù)字典的相關(guān)說明,也了解了主外鍵的意義與作用,也知道了插入元組的時候?qū)傩云ヅ鋯栴},以及對表的屬性域的修改等。通過編寫程序,讓我對表連接有了更加系統(tǒng)的認識,也知道了在連接時先選出要查詢的元組更省時間,省空間。了解了怎樣存儲表信息才能既省空間又能保存表信息,沒有冗余情況。通過做實驗,我將理論與實踐有了更好的結(jié)合,不但提高了對理論的理解,更讓我對編程能力有了很好的鍛煉。參考文獻《數(shù)據(jù)庫系統(tǒng)原理》 李建中 王珊編著 電子工業(yè)出版社 《Java技術(shù)及其應(yīng)用》 王克宏 編著 高等教育出版社第五篇:數(shù)據(jù)庫實驗報告10包三 李雅 100910306實驗報告一、實驗題目:數(shù)據(jù)庫基本操作實驗二、實驗?zāi)康模赫莆諗?shù)據(jù)庫的建立、表的設(shè)計基本方法,通過實際操作熟練掌握數(shù)據(jù)庫的基本操作——數(shù)據(jù)的輸入與導入,表的設(shè)計。三、實驗內(nèi)容:建立課程管理數(shù)據(jù)庫,要求:、開設(shè)課程、選課表、學生基本數(shù)據(jù)等,并輸入一些學生不同課程的考試成績。,分別是成績查詢、學分查詢、不及格學生查詢。,分別顯示不及格學生的姓名、課程名稱、成績和班級ID。在成績查詢中顯示學生姓名及各科成績。在教師基本信息中顯示編號、職稱、工資、院系、等。同時建立開設(shè)課程表和學生基本信息的窗體查詢。提供用戶一個簡單的應(yīng)用程序界面,方便用戶操作使用。包括教師的授課報表,課程名稱及課程類別。學生的總成績報表,包括課程名稱、成績和學分。注:課程及考試成績可以任意輸入。選課按照班級確定。四、實驗過程:數(shù)據(jù)庫表設(shè)計在表格內(nèi)填入教師基本信息、開始課程、課程基本信息、選課表、學生基本信息。教師基本信息:開設(shè)課程:/ 710包三 李雅 100910306課程基本信息:選課表:/ 710包三 李雅 100910306學生基本信息:查詢表: 成績查詢:/ 710包三 李雅 100910306學分查詢:不及格學生查詢:/ 710包三 李雅 100910306窗體設(shè)計: 不及格學生信息查詢:成績查詢:教師基本信息查詢:開設(shè)課程信息查詢:/ 710包三 李雅 100910306學生基本信息查詢:報表: 教師的授課報表:/ 710包三 李雅 100910306學生的總成績:/ 7