《數(shù)據(jù)庫系統(tǒng)》上機輔導(dǎo).ppt
1,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),西安電子科技大學(xué) 計算理論與技術(shù)研究所 王小兵,2,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),3,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),4,設(shè)計學(xué)籍管理系統(tǒng),后臺數(shù)據(jù)庫 設(shè)計一個系的學(xué)籍?dāng)?shù)據(jù)庫,可以使用Adaptive Server Anywhere、SQL Server、ACCESS、MYSQL等DBMS。 學(xué)籍?dāng)?shù)據(jù)庫的有關(guān)語義如下: 一個系可以若干專業(yè),每個專業(yè)每年可以招若干班,每個班有若干學(xué)生。 系里對每個專業(yè)每年都制訂了教學(xué)計劃,學(xué)生每年必須按照教學(xué)計劃修完一定學(xué)分的課程(必修課、限選課和任選課),如2000年入學(xué)的學(xué)生大三上學(xué)期必修課30學(xué)分,限選課10學(xué)分,任選課6學(xué)分。 系里的教師可以給多個班帶課,但是不能給一個班帶多門課程。 一門課程最多允許學(xué)生一次補考,學(xué)生達到如下條件之一的被開除: 一學(xué)期不及格的必修課學(xué)分超過10個; 不及格必修課學(xué)分累計超過30個; 不及格選修課學(xué)分累計超過20個;,5,設(shè)計學(xué)籍管理系統(tǒng),前臺程序 開發(fā)一個學(xué)籍管理系統(tǒng)來對學(xué)籍?dāng)?shù)據(jù)庫進行訪問,可以使用PowerBuilder、VC、VB、C+ Builder、Delphi、VF等前臺開發(fā)工具。系統(tǒng)實現(xiàn)功能如下: 錄入學(xué)生基本信息,如學(xué)號、姓名、性別、出生日期等(其他如課程、教師等信息可以在建庫時輸入); 按學(xué)號、姓名查詢學(xué)生基本信息; 錄入學(xué)生成績; 查詢學(xué)生所選修的課程及成績,并給出必修課平均成績和選修課平均成績; 查某一個學(xué)生被哪些教師教過課; 查詢快要被開除的學(xué)生(假定差2學(xué)分即被開除)。,6,設(shè)計學(xué)籍管理系統(tǒng),注意事項: 在數(shù)據(jù)庫的設(shè)計過程中需要運用規(guī)范化理論,避免出現(xiàn)插入異常、刪除異常、數(shù)據(jù)冗余等問題; 必須設(shè)定關(guān)系的完整性規(guī)則,如實體完整性(例如設(shè)置主碼),參照完整性(例如設(shè)置外碼和對應(yīng)的主碼),用戶自定義完整性(例如性別只能為“男”或“女”); 可以使用索引來加快查詢的速度; 可以使用視圖來簡化系統(tǒng)的設(shè)計; 上機實習(xí)重點在于后臺數(shù)據(jù)庫的設(shè)計,對于前臺程序的開發(fā),能夠?qū)崿F(xiàn)系統(tǒng)功能即可,不要把大量時間花費在界面設(shè)計和不必要的代碼上。,7,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),8,數(shù)據(jù)庫上機作業(yè)報告,上機作業(yè)報告必須手寫,不能交打印稿。按照數(shù)據(jù)庫設(shè)計的基本步驟,書寫上機報告: 需求分析(系統(tǒng)數(shù)據(jù)和功能) 概念結(jié)構(gòu)設(shè)計(E-R圖設(shè)計) 邏輯結(jié)構(gòu)設(shè)計(E-R圖轉(zhuǎn)換為關(guān)系模型) 程序開發(fā)環(huán)境及應(yīng)用環(huán)境 應(yīng)用程序設(shè)計中遇到的問題及解決方法 總結(jié) 附錄(可打?。航?shù)據(jù)庫和應(yīng)用程序的主要代碼,9,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),10,PowerBuilder簡介,PowerBuilder是具有圖形界面的C/S模式(客戶機/服務(wù)器模式)以及分布式數(shù)據(jù)庫應(yīng)用程序的前端開發(fā)工具,它可以快速簡潔的開發(fā)出功能強大的、充分滿足用戶需要的數(shù)據(jù)庫應(yīng)用軟件。 在PowerBuilder中有一系列的畫筆(Painter),用來創(chuàng)建和設(shè)計相應(yīng)的對象,如Window Painter , Database Painter , Application Painter , Menu Painter等。 數(shù)據(jù)窗口是PowerBuilder的核心,在對數(shù)據(jù)庫的開發(fā)過程中可以用來錄入、查詢、統(tǒng)計或者報表,并能夠以多種風(fēng)格來顯示數(shù)據(jù)。 數(shù)據(jù)窗口的處理機制: 設(shè)計數(shù)據(jù)窗口對象,包含顯示方式,數(shù)據(jù)源(核心是SQL) 運行時通過數(shù)據(jù)窗口控件控制數(shù)據(jù)窗口對象,提交SQL語句到數(shù)據(jù)庫服務(wù)器上運行 在客戶端對返回結(jié)果進行處理,最終結(jié)果可提交到數(shù)據(jù)庫保存,11,PowerBuilder簡介,PowerScript是PowerBuilder使用的面向?qū)ο蟮木幊陶Z言,類似于Visual Basic , QuickBASIC。 ASA(Adaptive Server Anywhere)是PowerBuilder提供的一個完整的數(shù)據(jù)庫管理系統(tǒng),它對資源的要求很低,易于安裝和設(shè)置使用,擁有基于代價的查詢優(yōu)化器,支持具有自動數(shù)據(jù)恢復(fù)的完全事務(wù)處理來保證數(shù)據(jù)的一致性和完整性。 PowerBuilder是客戶機/服務(wù)器模式的用于客戶端的數(shù)據(jù)庫應(yīng)用開發(fā)工具。,12,PowerBuilder簡介,一個PB程序?qū)?yīng)一個application(應(yīng)用),應(yīng)用對象和事務(wù)對象是應(yīng)用中的兩個特殊對象。 應(yīng)用對象:任何一個應(yīng)用都必須包含一個應(yīng)用對象。應(yīng)用對象是這個應(yīng)用的程序入口(Open事件)和程序出口(Close事件)。應(yīng)用程序啟動后,首先進入應(yīng)用對象,執(zhí)行Open事件中的代碼,調(diào)用其他對象,完成程序功能后,返回到應(yīng)用對象,執(zhí)行Close事件中的代碼,返回PB或者Windows。 事務(wù)對象:每個應(yīng)用有一個缺省的事務(wù)對象(SQLCA,SQL通信區(qū)),可以用來和后端的數(shù)據(jù)庫建立連接。通過訪問SQLCA中包含的信息,PB程序可以控制執(zhí)行流程。,13,PowerBuilder簡介,基于PowerBuilder的C/S數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),數(shù)據(jù)庫管理系統(tǒng),應(yīng)用對象,窗口對象,數(shù)據(jù)窗口對象,事務(wù)對象,PowerBuilder程序,Open,Close,Server,后臺,Client,前臺,14,PowerBuilder簡介,PowerBuilder程序,ODBC接口,ODBC驅(qū)動管理程序,Oracle驅(qū)動,ASA驅(qū)動,Oracle數(shù)據(jù)庫,ASA數(shù)據(jù)庫,PowerBuilder通過ODBC(開放數(shù)據(jù)庫互連標(biāo)準)訪問數(shù)據(jù)庫,SQL語句,15,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),16,PowerScript語言,PowerScript語言的基本特征: 一般一行寫一條語句 注釋用/、/*/ 語句換行使用連接符 結(jié)束,它是嵌入式SQL語句的標(biāo)志。 常用的嵌入式SQL語句: connect:使用SQLCA包含的信息連接數(shù)據(jù)庫 disconnect:斷開數(shù)據(jù)庫連接 declare:定義游標(biāo) open:打開游標(biāo) close:關(guān)閉游標(biāo) fetch into :推進游標(biāo)指針,把當(dāng)前記錄值賦給主變量 commit:提交事務(wù)的所有操作,把結(jié)果保存到數(shù)據(jù)庫中 rollback:回滾,將事務(wù)中對數(shù)據(jù)庫的操作全部撤銷,滾回到事務(wù)開始時的狀態(tài),20,PowerScript語言,/使用嵌入式SQL的PowerScript程序 /所有代碼放入應(yīng)用對象的Open事件中 /設(shè)置SQLCA SQLCA.DBMS = ODBC SQLCA.AutoCommit = false SQLCA.DBParm = Connectstring=DSN=xjgl /連接數(shù)據(jù)庫 connect; /定義游標(biāo) DECLARE c_s CURSOR FOR SELECT student.xh, student.xm, student.xb, student.csrq FROM student ; /打開游標(biāo) OPEN c_s;,/聲明主變量 string xh,xm,xb date csrq /逐一處理游標(biāo)中的查詢結(jié)果 do while (true) FETCH c_s INTO :xh,:xm,:xb,:csrq; if sqlca.sqlcode 0 then exit end if; messagebox(學(xué)生信息,21,例子,示例包含后臺數(shù)據(jù)庫設(shè)計和前臺PB程序開發(fā)兩個部分: 數(shù)據(jù)庫設(shè)計:使用ASA數(shù)據(jù)庫管理系統(tǒng)創(chuàng)建一個簡單的學(xué)生成績數(shù)據(jù)庫,其中包含學(xué)生表(student),課程表(course)、成績表(score)。 前臺PB程序開發(fā):使用PowerBuilder開發(fā)一個前臺程序,可以按照學(xué)生學(xué)號查詢學(xué)生的課程成績。 注: ASA數(shù)據(jù)庫支持的SQL語句可以參考PB自帶的幫助文件dbmaen8.chm PowerBuilder的語法可以參考PB自帶的幫助文件pbman90.chm,22,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),23,例子,學(xué)生成績數(shù)據(jù)庫的建立過程 進入PowerBuilder 打開Database Painter 建立數(shù)據(jù)庫xjgl(不要使用事務(wù)日志) 下面的步驟可以采用SQL語句完成,或使用菜單輔助完成 建立表student、course、score 設(shè)置主碼、外碼:course、student、score 輸入數(shù)據(jù):course、student、score 下一步,24,打開Database Painter,25,建立ASA數(shù)據(jù)庫,26,設(shè)置數(shù)據(jù)庫文件保存路徑,27,用SQL語句建表、主外碼、輸入數(shù)據(jù),28,使用菜單建表,29,使用菜單建表,30,使用菜單建表,31,使用菜單建表,32,使用菜單建表,33,使用菜單建立主碼,34,使用菜單建立主碼,35,使用菜單建立主碼,36,使用菜單建立主碼,37,使用菜單建立主碼,38,使用菜單建立外碼,39,使用菜單建立外碼,40,使用菜單建立外碼,41,使用菜單建立外碼,42,使用菜單建立外碼,43,使用菜單建立外碼,44,使用菜單建立外碼,45,使用菜單輸入數(shù)據(jù),46,使用菜單輸入數(shù)據(jù),47,使用菜單輸入數(shù)據(jù),48,使用菜單輸入數(shù)據(jù),49,使用菜單輸入數(shù)據(jù),50,例子,前臺查詢程序的開發(fā)過程 建立workspace 建立application 建立數(shù)據(jù)窗口對象dw_cj 注:可以查看、修改其中包含的SQL語句 建立主窗口w_main 在主窗口上放置控件 注:數(shù)據(jù)窗口控件dw_1要和數(shù)據(jù)窗口對象dw_cj相關(guān)聯(lián) 在查詢和退出按鈕中加入代碼 在應(yīng)用對象的open和close事件中加入代碼 運行程序 下一步,51,建立workspace,52,建立application,53,建立application,54,application對象建立完畢,55,建立數(shù)據(jù)窗口對象選擇顯示形式,56,建立數(shù)據(jù)窗口對象選擇數(shù)據(jù)源,57,建立數(shù)據(jù)窗口對象選擇數(shù)據(jù)源,58,建立數(shù)據(jù)窗口對象,59,建立數(shù)據(jù)窗口對象,60,建立數(shù)據(jù)窗口對象,61,建立數(shù)據(jù)窗口對象,62,建立數(shù)據(jù)窗口對象,63,建立數(shù)據(jù)窗口對象,64,保存數(shù)據(jù)窗口對象,65,查看數(shù)據(jù)窗口對象中的SQL語句,66,查看數(shù)據(jù)窗口對象中的SQL語句,67,數(shù)據(jù)窗口對象中的SQL語句,68,建立主窗口,69,放置數(shù)據(jù)窗口控件,70,關(guān)聯(lián)數(shù)據(jù)窗口控件和數(shù)據(jù)窗口對象,71,放置其他控件(單行編輯框、按鈕等),72,編寫查詢按鈕的代碼,73,編寫退出按鈕的代碼,74,編寫應(yīng)用對象的open事件代碼,75,編寫應(yīng)用對象的close事件代碼,76,運行結(jié)果,77,數(shù)據(jù)庫系統(tǒng)上機輔導(dǎo),上機作業(yè)要求 設(shè)計學(xué)籍管理系統(tǒng) 數(shù)據(jù)庫上機作業(yè)報告 上機環(huán)境介紹 PowerBuilder簡介 PowerScript語言 后臺設(shè)計和前臺開發(fā) 上機環(huán)境的保存和恢復(fù),78,上機環(huán)境的保存和恢復(fù),保存 數(shù)據(jù)庫文件 程序文件 恢復(fù) 在操作系統(tǒng)中設(shè)置ODBC 在Database Painter中設(shè)置profile建立設(shè)計模式下的數(shù)據(jù)庫連接,79,數(shù)據(jù)庫文件和程序文件,80,打開ODBC,81,建立基于ASA的ODBC數(shù)據(jù)源,82,設(shè)置ODBC數(shù)據(jù)源的名字,83,設(shè)置ODBC數(shù)據(jù)源的用戶名dba和密碼sql,84,選擇數(shù)據(jù)庫文件,85,ODBC數(shù)據(jù)源建立完畢,86,PB中新建profile,87,關(guān)聯(lián)profile和ODBC數(shù)據(jù)源,88,通過ODBC連接ASA數(shù)據(jù)庫,89,連接成功,