版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、信息工程學(xué)院數(shù)據(jù)庫課程設(shè)計論文題 目:學(xué)科競賽數(shù)據(jù)庫設(shè)計學(xué)號:專業(yè)班級:姓名:指導(dǎo)老師:完成日期:72學(xué)科競賽管理系統(tǒng)數(shù)據(jù)庫設(shè)計摘 要: 學(xué)科競賽是每個學(xué)校有的一項活動,他可以提高學(xué)生學(xué)習(xí)的積極性,培養(yǎng)學(xué)生對學(xué)科的興趣,豐富學(xué)生的課余生活,讓學(xué)生在課下可以學(xué)到知識,交到朋友。但學(xué)科競賽的管理十分繁瑣,流程復(fù)雜,工作量大。因此老師和教務(wù)處都迫切需要一個能方便管理競賽的系統(tǒng)。該系統(tǒng)面向?qū)W生,老師,教務(wù)處,學(xué)院領(lǐng)導(dǎo)四種用戶,涉及申請比賽,查詢比賽,總結(jié)比賽,報名參賽,查詢成績等多方面功能。這次設(shè)計包括需求分析,概念結(jié)構(gòu)設(shè)計,物理結(jié)構(gòu)設(shè)計,數(shù)據(jù)庫實施四個方面。關(guān)鍵字:數(shù)據(jù)庫;學(xué)科競賽管理;SQL Se
2、rver目錄1需求分析1業(yè)務(wù)流程圖:2數(shù)據(jù)流程圖:32數(shù)據(jù)庫結(jié)構(gòu)設(shè)計72.1 概念設(shè)計82.1.1 分E-R圖建立82.1.2 全局/整體E-R圖82.2 邏輯設(shè)計92.2.1 建立關(guān)系模式102.2.2 關(guān)系模式規(guī)范化處理112.2.3 用戶子模式建立122.2.4 關(guān)系模式邏輯結(jié)構(gòu)定義143數(shù)據(jù)庫物理設(shè)計154數(shù)據(jù)庫實施與測試164.1 SQL Server 2008數(shù)據(jù)庫實施與測試164.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立164.1.2 數(shù)據(jù)入庫164.1.3 數(shù)據(jù)庫測試174.2 Oracle數(shù)據(jù)庫實施與測試414.2.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立414.2.2 數(shù)據(jù)入庫414.2.3 數(shù)據(jù)
3、庫測試415總結(jié)526附錄52附錄152數(shù)據(jù)字典:52附錄256附錄359附錄46413級軟件工程專業(yè)3班數(shù)據(jù)庫應(yīng)用系統(tǒng)課程設(shè)計課程論文1需求分析需求分析是每個應(yīng)用程序設(shè)計前必須的也是最重要的步驟,如果需求分析沒做好,后期的工作可能算白費了。因為軟件的設(shè)計就是為了服務(wù)用戶,如果對用戶的需求分析錯誤,那么最終設(shè)計的軟件就不是用戶所需要的。所以需求分析在軟件開發(fā)周期中占有比較的的比重。并且貫穿軟件開發(fā)始終。不能為了減少開發(fā)時間而縮短需求分析的時間。需求分析需要全面考慮用戶的每個需求,有些用戶沒提到的需求也要從其他需求中提去出來。需求分析力求準(zhǔn)確、完整、清晰、具體。為了更好的分析需求,需要設(shè)計很多圖
4、和表。包括業(yè)務(wù)流程圖、數(shù)據(jù)流程圖。需要設(shè)計數(shù)據(jù)字典,包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)邏輯、數(shù)據(jù)存儲。概述:學(xué)科競賽信息管理系統(tǒng)旨在搭建一個信息平臺,方便各類用戶處理學(xué)科競賽方面的事務(wù),如方便用戶瀏覽信息,簡化管理中的各種操作,提高相關(guān)人員工作的效率。其服務(wù)的對象有四個,分別為學(xué)生,教師,教務(wù)處管理員,學(xué)院管理員。學(xué)生主要的業(yè)務(wù)有報名參賽,老師可以申報比賽,提交比賽總結(jié),教務(wù)處和學(xué)院負(fù)責(zé)審核比賽和添加比賽,并且負(fù)責(zé)各項賽事的統(tǒng)計和分析工作。所有用戶都可以對賽事進(jìn)行查詢。首先從業(yè)務(wù)的角度來描述其功能。業(yè)務(wù)主要分為兩個部分:報名管理和過程管理,過程管理分為競賽項目管理,競賽統(tǒng)計管理,競賽項目查詢?nèi)?/p>
5、部分。報名管理:系統(tǒng)根據(jù)競賽的報名信息推薦給相關(guān)學(xué)生。學(xué)生如果選擇報名,不用填寫信息,系統(tǒng)會將其個人信息直接存儲在報名表中,待教師和學(xué)院進(jìn)行審核,審核的結(jié)果會在開賽前幾天公布。競賽項目管理:教師填寫競賽申請表和報名信息,系統(tǒng)先交個學(xué)院審核,通過了再交給教務(wù)處審核。通知老師最終的審核結(jié)果。如果都審核通過了,教務(wù)處發(fā)布到系統(tǒng)中。如果審核不通過,教務(wù)處可以讓老師修改項目預(yù)算,修改時間或地點后再次申請,或者直接放棄該項賽事。競賽統(tǒng)計管理:學(xué)院賽事統(tǒng)計,可以查看某一年份各學(xué)院申報競賽的數(shù)量和經(jīng)費,也可以分析各個學(xué)院在某個比賽的表現(xiàn),查詢某個學(xué)生在校所獲獎項等。這些都可以作為報表導(dǎo)出。競賽賽事查詢:各用戶
6、可以根據(jù)不同的需求進(jìn)行競賽項目的查詢操作,查看競賽的報名情況,成績等信息。圖 1-1系統(tǒng)功能結(jié)構(gòu)圖簡化功能結(jié)構(gòu)如下業(yè)務(wù)流程圖:圖1-2添加比賽業(yè)務(wù)圖1-3學(xué)生報名參賽業(yè)務(wù)數(shù)據(jù)流程圖:圖 1-4頂層數(shù)據(jù)流程圖圖 1-5第一層數(shù)據(jù)流程圖1圖1-6第一層數(shù)據(jù)流程圖2圖1-7第一層數(shù)據(jù)流程圖3圖1-8第二層數(shù)據(jù)流程圖1圖1-9第二層數(shù)據(jù)流程圖2圖1-10第二層數(shù)據(jù)流程圖3根據(jù)數(shù)據(jù)流程圖可以建立數(shù)據(jù)字典,分別有數(shù)據(jù)項,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)流,數(shù)據(jù)邏輯和數(shù)據(jù)存儲。見附錄1.2數(shù)據(jù)庫結(jié)構(gòu)設(shè)計主要包括概念設(shè)計和邏輯設(shè)計兩個部分。2.1 概念設(shè)計/*闡述概念設(shè)計目標(biāo)、任務(wù)和方法,重點介紹概念設(shè)計的內(nèi)容。*/概念模型是
7、現(xiàn)實世界到機(jī)器世界的一個中間層次。概念結(jié)構(gòu)設(shè)計時整個數(shù)據(jù)庫設(shè)計的關(guān)鍵,它通過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨立于具體數(shù)據(jù)庫管理系統(tǒng)的概念模型。 數(shù)據(jù)庫系統(tǒng)概論(王珊,薩師煊第五版)概念設(shè)計就是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(即概念模型)。概念設(shè)計是在需求分析的基礎(chǔ)上進(jìn)行設(shè)計的,是把需求分析的成果轉(zhuǎn)化為簡單、清晰、易于理解的概念模型。概念模型中最主要的就是ER圖。2.1.1 分E-R圖建立闡述分E-R圖建立的思想(以中層數(shù)據(jù)為切入點,按照分層次/分模塊思想),用E-R模式描述。E-R圖的建立以比賽為切入點。分為教師申請比賽,學(xué)院或教務(wù)處添加或總結(jié)比賽。學(xué)院或教務(wù)處審核比賽,學(xué)生
8、報名參賽。教師總結(jié)比賽等模塊2.1.2 全局/整體E-R圖整體E-R圖整體E-R把各個E-R圖按邏輯組合起來。來粗略的描述整個系統(tǒng)要完成的功能。E-R圖如下:圖 2- 1全局E-R圖2.2 邏輯設(shè)計邏輯結(jié)構(gòu)設(shè)計的任務(wù)就是把概念結(jié)構(gòu)設(shè)計階段設(shè)計的基本E-R圖轉(zhuǎn)換為與選用數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。2.2.1 建立關(guān)系模式E-R圖向關(guān)系模型的轉(zhuǎn)換要解決的問題是,如何將實體型和實體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,如何確定這些關(guān)系模式的屬性和碼。對于不同的實體間的聯(lián)系有不同的轉(zhuǎn)換方式。1. 一個1:1聯(lián)系可以轉(zhuǎn)換為一個獨立的關(guān)系模式,也可以與任意一端對應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個獨
9、立的關(guān)系模式,則與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個實體的碼均是該關(guān)系的候選碼。如果與某一端實體對應(yīng)的關(guān)系模式合并,則需要再該關(guān)系模式的屬性中加入另一個關(guān)系模式的碼和聯(lián)系本身的屬性。2. 一個1:n聯(lián)系可以轉(zhuǎn)換為一個獨立的關(guān)系模式,也可以與n端對應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個獨立的關(guān)系模式,則與該聯(lián)系相連的各實體的碼及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實體的碼。3. 一個m:n聯(lián)系轉(zhuǎn)換為一個關(guān)系模式,與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,個實體的碼組成關(guān)系的碼或關(guān)系碼的一部分。4. 三個或三個以上實體間的一個多元聯(lián)系可以轉(zhuǎn)
10、換為一個關(guān)系模式。與該多元聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,個各實體組成關(guān)系的碼或關(guān)系碼的一部分。5. 具有相同碼的關(guān)系模式可以合并。根據(jù)上面的轉(zhuǎn)換原則得到的關(guān)系模式如下:學(xué)生信息(學(xué)號,姓名,性別,生日,電話,郵箱,專業(yè),所在班級,年級,系統(tǒng)登錄密碼, 學(xué)號->姓名, 學(xué)號->性別, 學(xué)號->電話,學(xué)號->郵箱,學(xué)號->所在班級, 學(xué)號->年級, 學(xué)號->專業(yè),學(xué)號->系統(tǒng)登錄密碼);教師信息(工號,姓名,性別,生日,電話,郵箱,所在學(xué)院,登錄密碼,職務(wù), 備注,工號->姓名, 工號->性別,工號->生
11、日,工號->電話, 工號->郵箱, 工號->所在學(xué)院, 工號->登錄密碼, 工號->職務(wù));學(xué)院信息(學(xué)院名, 負(fù)責(zé)人工號, 學(xué)院名->負(fù)責(zé)人工號);/教務(wù)處當(dāng)做學(xué)院處理。專業(yè)信息(專業(yè)名稱,所在學(xué)院, 專業(yè)名稱->所在學(xué)院);賽事信息(賽事編號,賽事名稱,賽事信息,比賽時間,賽事級別,主辦方,負(fù)責(zé)人工號,報名開始時間,報名結(jié)束時間,賽事舉辦地點,賽事預(yù)算,賽事申請信息,賽事總結(jié),賽事審核信息,賽事編號->賽事名稱, 賽事編號->比賽時間,賽事編號->賽事級別,賽事編號->主辦方,賽事編號->負(fù)責(zé)人工號,賽事編號->
12、報名開始時間,賽事編號->報名結(jié)束時間,賽事編號->賽事舉辦地點,賽事編號->賽事申請信息,賽事編號->賽事總結(jié),賽事編號>賽事審核信息);競賽報名信息及結(jié)果(賽事編號, 報名學(xué)生學(xué)號,指導(dǎo)老師, 報名學(xué)生成績,報名學(xué)生排名,報名學(xué)生備注,賽事編號+報名學(xué)生學(xué)號->報名學(xué)生學(xué)號,賽事編號+報名學(xué)生學(xué)號->指導(dǎo)老師,賽事編號+報名學(xué)生學(xué)號->報名學(xué)生成績,賽事編號+報名學(xué)生學(xué)號->報名學(xué)生排名,賽事編號+報名學(xué)生學(xué)號->報名學(xué)生備注) 主碼:賽事編號+報名學(xué)生學(xué)號;通知信息(通知編號,通知時間,通知發(fā)起者,通知內(nèi)容, 通知編號->
13、通知時間, 通知編號->通知發(fā)起者,通知編號->通知內(nèi)容);學(xué)生通知(通知編號,通知對象學(xué)號);教師通知(通知編號,通知對象工號);2.2.2 關(guān)系模式規(guī)范化處理1. 對于學(xué)生信息關(guān)系模式, 姓名,性別,專業(yè),生日,郵箱,手機(jī)號,年級,密碼, 這些屬性都是獨立的不相互關(guān)聯(lián)的,所以不存在依賴關(guān)系,那么處理學(xué)號與其他非主屬性的函數(shù)依賴外,就不存在其他函數(shù)依賴,也就不存在傳遞依賴了,所以滿足三范式。2. 對于教師關(guān)系模式,與學(xué)生信息關(guān)系模式相同,所以也滿足三范式。3. 對于競賽信息關(guān)系,其中的非主屬性互不相關(guān),所以不存在傳遞關(guān)系。4. 對于競賽成績信息,他是由競賽與學(xué)生的關(guān)系轉(zhuǎn)換而來,非
14、主屬性互不依賴,所以也滿足三范式。5. 對于通知信息,其中的非主屬性互不相關(guān),所以不存在傳遞依賴,所以滿足三范式。6. 學(xué)生通知和教師通知是由實體聯(lián)系轉(zhuǎn)換而得到的關(guān)系,其特點類似于競賽成績所以也滿足三范式。7. 學(xué)院和專業(yè)關(guān)系都只有兩個屬性,所以不可能存在傳遞依賴,所以滿足三范式。2.2.3 用戶子模式建立用戶子模式的設(shè)計是根據(jù)不同用戶或局部應(yīng)用的需求,結(jié)合具體關(guān)系數(shù)據(jù)庫來生成多個視圖。視圖并不是真正存在的表,而是由基本表導(dǎo)出的表,是一個虛表。視圖的建立對數(shù)據(jù)庫來說意義重大。視圖有以下幾個方面的優(yōu)勢:1. 視圖能夠簡化用戶的操作。直接在視圖上操作,比在表上操作更方便,因為直接在表上操作,可能需
15、要用到,連接、嵌套查詢等操作,如果直接在視圖上操作,可能不需要這些操作。2. 視圖使用戶以多種角度看待同一數(shù)據(jù)。視圖的建立沒有想基本表那樣多的約束,它可以根據(jù)用戶的實際需求來建立表。比如說成績信息,在基本表中應(yīng)該是學(xué)號、比賽編號和成績,但老師希望看到的是學(xué)生姓名和比賽成績。這個就可以構(gòu)成一個視圖。3. 視圖對重構(gòu)數(shù)據(jù)庫提夠了一定程度的邏輯獨立性。意思是說如果數(shù)據(jù)庫要重構(gòu),基本表的結(jié)構(gòu)改變了,但由于視圖的存在,如果之前有的操作是在視圖上的,那么這些操作相關(guān)的代碼就不用修改了。4. 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。針對不同用戶建立不同的視圖,使得不同用戶只能看到數(shù)據(jù)表中的部分?jǐn)?shù)據(jù),可以有效防止數(shù)據(jù)
16、泄露,數(shù)據(jù)被惡意修改。5. 適當(dāng)利用視圖可以更清晰地表達(dá)查詢。如果之前建立好了視圖,那么在查詢的時候直接對視圖進(jìn)行查詢語句會更加簡單易懂。針對該數(shù)據(jù)庫,可建立如下視圖:1. 對于學(xué)生信息,學(xué)生,教師能看到學(xué)生信息表和教師信息表中除了密碼以外的全部信息。所以針對學(xué)生信息表和教師信息表,建立一個包含除了密碼以外的所有信息的視圖。為了方便了解信息,在視圖中把學(xué)生表中的生日替換為年齡,然后加上學(xué)生學(xué)院信息。2. 對于賽事信息,除了競賽申請者、學(xué)院負(fù)責(zé)人,其他人不能看到賽事信息表中的賽事預(yù)算,賽事總結(jié),賽事審核信息。所以把賽事信息表中已經(jīng)審核通過的比賽除了這些屬性外,再建立一個視圖,方便學(xué)生查看和報名比
17、賽。3. 為了方便學(xué)生和教師查看成績,應(yīng)該建立含有學(xué)生具體信息的成績視圖。4. 為了方便學(xué)生查看和報名即將舉行的比賽,應(yīng)對已經(jīng)審核通過的比賽建立視圖。5. 為了方便學(xué)院和教務(wù)處審核比賽,應(yīng)對待審核的比賽建立視圖。具體視圖信息如下:1.學(xué)生信息視圖(學(xué)號,姓名,性別,年齡,電話,郵箱,專業(yè),所在學(xué)院,年級);2.教師信息視圖(工號,姓名,性別,年齡,電話,郵箱,所在學(xué)院);3.已審核賽事信息視圖(賽事編號,賽事名稱,賽事信息,比賽時間,賽事級別,主辦方,負(fù)責(zé)人工號,報名開始時間,報名結(jié)束時間,賽事舉辦地點);4.學(xué)生成績視圖(學(xué)生姓名,專業(yè),年級,學(xué)院,比賽名稱,指導(dǎo)老師,比賽成績,比賽排名,備
18、注);5.待審核賽事信息視圖(賽事編號,賽事名稱,賽事信息,比賽時間,賽事級別,主辦方,負(fù)責(zé)人工號,報名開始時間,報名結(jié)束時間,賽事舉辦地點,賽事預(yù)算,賽事申請信息,賽事總結(jié),賽事審核信息)6.已審核賽事視圖(賽事編號,賽事名稱,賽事信息,比賽時間,賽事級別,主辦方,負(fù)責(zé)人工號,報名開始時間,報名結(jié)束時間,賽事舉辦地點,賽事預(yù)算,賽事申請信息,賽事總結(jié),賽事審核信息)圖2-2 全部視圖2.2.4 關(guān)系模式邏輯結(jié)構(gòu)定義關(guān)系模式總共有九個,一下為其匯總表。表2-2 醫(yī)院門診管理系統(tǒng)關(guān)系模式匯總表關(guān)系模式名稱含義備注studentInfor學(xué)生詳細(xì)信息附錄2 附表1teacherInfor教師詳細(xì)信
19、息附錄2 附表2departInfor學(xué)院信息附錄2 附表3contestInfor賽事詳細(xì)信息附錄2 附表4notice通知相關(guān)內(nèi)容附錄2 附表5stunotice學(xué)生通知記錄附錄2 附表6teanotice教師通知記錄附錄2 附表7conResult競賽成績信息附錄1 附表8majInfor專業(yè)學(xué)院關(guān)系附錄1附表93 數(shù)據(jù)庫物理設(shè)計數(shù)據(jù)庫的物理設(shè)計時為邏輯數(shù)據(jù)模型選取一個合適的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)從而最大限度地提高數(shù)據(jù)庫的效率。數(shù)據(jù)庫的物理設(shè)計通常分為兩步:(1) 確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu)(2) 對物理結(jié)構(gòu)進(jìn)行評價,評價的重點是時間和空間效
20、率。由于在建立主鍵的時候,數(shù)據(jù)庫自動將其當(dāng)做聚簇索引,而一張表只能建立一個聚簇索引,所以這里主要考慮非聚簇索引的設(shè)計。雖然索引會明顯提高數(shù)據(jù)查詢的效率,但索引的加入也會帶來弊端。(1) 索引的建立會增加數(shù)據(jù)庫的磁盤占用空間。索引并不像視圖那樣是虛的,它是實際存在的一種表,索引任何索引都會占據(jù)一定的空間。(2) 索引的建立會影響insert, delete, update等語句的功能。因為執(zhí)行這些語句的同時,索引也要做相應(yīng)的調(diào)整和更新。就該數(shù)據(jù)庫而言,學(xué)生信息是該系統(tǒng)的基礎(chǔ),大多數(shù)業(yè)務(wù)都圍繞著某個學(xué)院的學(xué)生進(jìn)行的,如通知某個學(xué)院的學(xué)生參加比賽,查詢某個學(xué)院的學(xué)生信息,所以學(xué)生表表會經(jīng)常涉及到關(guān)于
21、某個學(xué)院的查詢和連接操作。并且學(xué)生信息表在建立后就很少插入,更新和刪除,根據(jù)上面的討論,可以對學(xué)生信息表中的專業(yè)名稱建立非聚簇索引。另外競賽信息也是該系統(tǒng)的基礎(chǔ),在學(xué)生查看所在學(xué)院競賽,教務(wù)處統(tǒng)計某個學(xué)院競賽經(jīng)費和舉辦情況這些業(yè)務(wù)中會經(jīng)常涉及到ORDER BY、GROUP BY、 UNION、 DISTINCT操作,所以對競賽信息表中的學(xué)院名稱也建立非聚簇索引。再者,競賽成績信息是該系統(tǒng)的中心,無論是學(xué)生,老師,學(xué)院,還是教務(wù)處,都會涉及到查詢某個競賽成績的操作,而且每個競賽都會有排名,這涉及到ORDER BY 操作,查詢某個競賽某個學(xué)院的比賽情況,這涉及到GROUP BY操作。并且一但競賽成
22、績被錄入,就不會對該成績信息進(jìn)行更新、插入和刪除操作。所以,對競賽成績中的競賽編號建立非聚簇索引。圖2-3 全部索引4數(shù)據(jù)庫實施與測試4.1 SQL Server 2008數(shù)據(jù)庫實施與測試4.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立按照邏輯設(shè)計的成果,由于存在外鍵約束,所以對建表的順序有約束。根據(jù)各個約束條件。分別建立學(xué)院信息表,專業(yè)信息表,教師信息表,學(xué)生信息表,賽事信息表,通知信息表,學(xué)生通知表,教師通知表,賽事成績表。DDL語句見附錄3。4.1.2 數(shù)據(jù)入庫選擇一些學(xué)院和專業(yè)錄入到數(shù)據(jù)庫,然后隨機(jī)錄入教師和學(xué)生信息。然后根據(jù),在錄入過程中根據(jù)外鍵約束做相應(yīng)調(diào)整。4.1.3 數(shù)據(jù)庫測試下面主要對建立
23、的存儲過程和觸發(fā)器測試。/*教師申請比賽的存儲過程*/createprocedure tea_apply_contestconName varchar(30),conInfor text, conLevel varchar(20),conHost varchar(20),conTeaId varchar(10),conBudget smallint,conApply textasinsertinto conInfor(conName,conInfor,conLevel,conHost,conTeaId,conBudget,conApply,conVerify)values(conName,co
24、nInfor, conLevel,conHost,conTeaId,conBudget,conApply,'未審核')go測試代碼exec tea_apply_contest'Java知識大賽','數(shù)據(jù)庫設(shè)計的比賽,面向全院','院級','信息工程學(xué)院','2000000003','3000','申請說明書'go測試結(jié)果:圖4-1圖4-2/*學(xué)院或教務(wù)處添加比賽的過程*/createprocedure add_contestconName varchar(30),co
25、nInfor text, conLevel varchar(20),conHost varchar(20),conTeaId varchar(10),conBudget smallint,conApply textasinsertinto conInfor(conName,conInfor,conLevel,conHost,conTeaId,conBudget,conApply,conVerify)values(conName,conInfor, conLevel,conHost,conTeaId,conBudget,conApply,'審核通過')goexec add_con
26、test'C+語言知識大賽','關(guān)于C語言知識設(shè)計的比賽,面向全院','院級','信息工程學(xué)院','2000000001','3000','申請說明書'go測試結(jié)果:圖4-3/*顯示待審核比賽存儲過程*/createprocedure show_unverifyasselectteaInfor.teaName,conInfor.conName,conInfor.conInfor,conInfor.conLevel,conInfor.conHost,conInfor.conTeaId,
27、conInfor.conBudget,conInfor.conApplyfromconInfor,teaInforwhere conVerify ='未審核'and teaInfor.teaID = conInfor.conTeaIdgoexec show_unverifygo圖4-4/*審核比賽過程*/createprocedure verify_contestconID int,verifyInfor varchar(10)asupdate conInforset conInfor.conVerify = verifyInforwhere conInfor.conID =
28、conIDgoexec verify_contest'2','審核未通過'goexec verify_contest'3','審核通過'go圖4-5/*設(shè)置報名和比賽信息的過程*/createprocedure set_reg_inforconID int,conTime datetime,regBegin datetime,regEnd datetime,conAddress varchar(50)asupdate conInfor setconInfor.conTime = conTime,conInfor.regBegin
29、= regBegin,conInfor.regEnd = regEnd,conInfor.conAddress = conAddresswhereconInfor.conID = conIDand conInfor.conVerify ='審核通過'goexec set_reg_infor8,'2015/6/24 12:00','2015/6/23 20:00','2015/6/24 10:00','信息工程學(xué)院m2'go測試結(jié)果圖4-6/*測試ident_current()函數(shù),該函數(shù)返回剛插入后數(shù)據(jù)項的主鍵*/
30、insertinto notice(noticeTime,noticeHostID,noticeInfo)values('2015/6/24 00:05','2000000001','測試5')selectident_current('notice')go/*賽事負(fù)責(zé)人通知學(xué)生參加某個比賽*/dropprocedure con_noticegocreateprocedure con_noticeconID int,noticeTime datetime,noticeHostID varchar(10),stuGrade char(
31、4),name varchar(20)asbeginif(select conInfor.conVerifyfrom conInforwhere conInfor.conID = conID)='審核通過'begindeclareconName varchar(30),conLevel varchar(20),noticeID intselect conName =(select conNamefrom conInforwhere conID = conID)select conLevel =(select conLevelfrom conInforwhere conID =
32、conID)insertinto notice(noticeTime,noticeHostID,noticeInfo)values(noticeTime,noticeHostID,conName +'馬上就要開始了,希望你踴躍報名參加!')select noticeID =(selectident_current('notice')declare stuID char(10)if conLevel ='校級'begindeclare uni_cursor cursorforselect stuID from stuInforwhere stuGr
33、ade = stuGradeopen uni_cursorfetchnextfrom uni_cursorinto stuIDwhile(FETCH_STATUS=0)begininsertinto stuNotice(stuNotID,stuNotTo)values(noticeID,stuID)fetchnextfrom uni_cursorinto stuIDendclose uni_cursordeallocate uni_cursorendif conLevel ='院級'begindeclare dep_cursor cursorforselect stuID fr
34、omstuInfor,majInforwherestuGrade = stuGradeand stuInfor.stuMajor = majInfor.majNameand majInfor.depName = nameopen dep_cursorfetchnextfrom dep_cursorinto stuIDwhile(FETCH_STATUS=0)begininsertinto stuNotice(stuNotID,stuNotTo)values(noticeID,stuID)fetchnextfrom dep_cursorinto stuIDendclose dep_cursord
35、eallocate dep_cursorendif conLevel ='專業(yè)級'begindeclare maj_cursor cursorforselect stuID from stuInforwherestuGrade = stuGradeand stuMajor = nameopen maj_cursorfetchnextfrom maj_cursorinto stuIDwhile(FETCH_STATUS=0)begininsertinto stuNotice(stuNotID,stuNotTo)values(noticeID,stuID)fetchnextfrom
36、 maj_cursorinto stuIDendclose maj_cursordeallocate maj_cursorendendelsereturnendgoexec con_notice1,'2015/6/23 23:00','2000000001','2013','信息工程學(xué)院'goexec con_notice3,'2015/6/23 22:00','2000000001','2013','信息工程學(xué)院'go圖4-7圖4-8/*查看各學(xué)院申請比賽經(jīng)費情況*
37、/createprocedure show_dep_contestasselectconHost,sum(conBudget) totalBudgetfrom conInforgroupbyconHost,conVerifyhaving conVerify ='審核通過'goexec verify_contest4,'審核通過'goexec show_dep_contestgo圖4-9dropprocedure reg_contestgo/*報名參賽過程*/createprocedure reg_contestconID int,stuID char(10),G
38、uide varchar(30)asinsertinto conResult(conID,conStuID,conStuGuiName)values(conID,stuID,Guide)goexec reg_contest2,'2013013112','劉全中'go圖4-10圖4-11dropproc set_scorego/*錄入成績過程*/createprocedure set_scoreconID int,stuID char(10),result realasupdate conResultset conStuScore = resultwherecon
39、ID = conIDand conStuID = stuIDgoexec set_score2,'2013013112',59.9go/*成績排名過程*/dropproc con_rankgocreateprocedure con_rankconID intasbegindeclaren int,preRank int,score real,preScore realselectn = 1,preRank = 1,preScore = 0declare rank_cursor cursorforselect conStuScorefrom conResultwhere conI
40、D = conIDorderby conStuScore descopen rank_cursorfetchnextfrom rank_cursor into scorewhile(FETCH_STATUS= 0)beginif(score = preScore)beginupdate conResultset conStuRank = preRankwherecurrentof rank_cursor endelsebeginupdate conResultset conStuRank = nwherecurrentof rank_cursorselect preRank = n endse
41、lectpreScore = score,n = n + 1 fetchnextfrom rank_cursor into scoreendclose rank_cursordeallocate rank_cursorselect*from conResultwhere conID = conIDorderby conStuScore descendgoexec con_rank3go圖4-12droptrigger verify_noticegocreatetrigger verify_noticeon conInforafterupdateasifupdate(conVerify)begi
42、ndeclarenewVerify varchar(10),noticeTo varchar(10),conName varchar(30)selectnewVerify = conVerify,noticeTo = conTeaID,conName = conNamefrom insertedinsertinto notice(noticeTime,noticeHostID,noticeInfo)values(dateadd(minute, 5,getdate(),'0000000000','系統(tǒng)提示:您申請的'+ conName +'審核情況已被修改
43、為: '+ newVerify )insertinto teaNotice(teaNotID,teaNotTo)values(selectident_current('notice'),noticeTo)endgoexec verify_contest6,'審核未通過'go圖4-13圖4-14droptrigger result_noticegocreatetrigger result_noticeon conResultafterupdateasif(update(conStuRank)begindeclarescore real,rank int,c
44、onName varchar(30),StuID varchar(10),conID varchar(10)selectconID = conID,stuID = conStuID,score = conStuScore,rank = conStuRankfrom insertedselect conName = conNamefromconResult,conInforwhere conResult.conID = conInfor.conIDinsertinto notice(noticeTime,noticeHostID,noticeInfo)values(dateadd(minute,
45、 5,getdate(),'0000000000','系統(tǒng)提示:您參加的'+ conName +'得分為:'+cast(score asvarchar)+'排名為: '+cast(rank asvarchar)insertinto stuNotice(stuNotID,stuNotTo)values(selectident_current('notice'),stuID)endgoexec con_rank1go圖4-15圖4-16droptrigger con_change_noticegocreatetrigg
46、er con_change_noticeon conInforafterupdateasif(update(conTime)orupdate(conAddress)begindeclareconName varchar(30),conTime datetime,conAddress varchar(50),StuID varchar(10),conID varchar(10)selectconID = conID,conName = conName,conTime = conTime,conAddress = conAddressfrom inserteddeclare stuID_curso
47、r cursorforselect conStuIDfrom conResultwhere conID = conIDopen stuID_cursorfetchnextfrom stuID_cursor into stuIDwhile(FETCH_STATUS= 0)begininsertinto notice(noticeTime,noticeHostID,noticeInfo)values(dateadd(minute, 5,getdate(),'0000000000','系統(tǒng)提示:您參加的'+ conName +'信息已更改。nt 地址為:
48、9;+ conAddress +' 時間為: '+cast(conTime asvarchar)insertinto stuNotice(stuNotID,stuNotTo)values(selectident_current('notice'),stuID)fetchnextfrom stuID_cursor into stuIDendclose stuID_cursordeallocate stuID_cursorendgoupdate conInforset conAddress ='N8110'where conID = 1圖4-174.
49、2Oracle數(shù)據(jù)庫實施與測試4.2.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立按照邏輯設(shè)計的成果,由于存在外鍵約束,所以對建表的順序有約束。根據(jù)各個約束條件。分別建立學(xué)院信息表,專業(yè)信息表,教師信息表,學(xué)生信息表,賽事信息表,通知信息表,學(xué)生通知表,教師通知表,賽事成績表。DDL語句見附錄4。4.2.2 數(shù)據(jù)入庫選擇一些學(xué)院和專業(yè)錄入到數(shù)據(jù)庫,然后隨機(jī)錄入教師和學(xué)生信息。然后根據(jù),在錄入過程中根據(jù)外鍵約束做相應(yīng)調(diào)整。4.2.3 數(shù)據(jù)庫測試基本表在建立和錄入數(shù)據(jù)時就已經(jīng)進(jìn)行測試和調(diào)整了,具體可見附錄4中的DDL語句。下面主要對建立的存儲過程和觸發(fā)器測試申請比賽的過程:createorreplaceprocedure apply_contest( v_conName in coninfor.conname%type, v_conInfor in coninfor.coninfor%type, v_conLevel in coninfor.conlevel%ty
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民房租賃法律咨詢與維權(quán)合同
- 二零二五年度會議場地綠化及布置服務(wù)保障合同
- 二零二五年度內(nèi)衣品牌國際市場拓展與海外銷售合同
- 2025年度大型活動安保團(tuán)隊聘用合同范本
- 2025版鋁合金門窗安裝施工合同2篇
- 2025年度虛擬現(xiàn)實技術(shù)研發(fā)中心個人技術(shù)合作合同3篇
- 二零二五年度智能門禁系統(tǒng)研發(fā)與銷售合同4篇
- 湖北省宜昌市高三第二次調(diào)考試題語文試題(含答案)
- 2025年度個人股權(quán)收益分配合同范本3篇
- 2025年度個人合伙人股權(quán)解除合同范本4篇
- 2024年09月2024興業(yè)銀行總行崗測評筆試歷年參考題庫附帶答案詳解
- 山東省煙臺市招遠(yuǎn)市2024-2025學(xué)年九年級上學(xué)期期末考試英語(筆試)試題(含答案)
- 駱駝祥子讀書筆記一至二十四章
- 2025年方大萍安鋼鐵招聘筆試參考題庫含答案解析
- 2024年醫(yī)師定期考核臨床類考試題庫及答案(共500題)
- 2025年電力工程施工企業(yè)發(fā)展戰(zhàn)略和經(jīng)營計劃
- 2022年公務(wù)員多省聯(lián)考《申論》真題(安徽C卷)及答案解析
- 大型活動保安培訓(xùn)
- 2024年大學(xué)本科課程教育心理學(xué)教案(全冊完整版)
- 信息系統(tǒng)運維服務(wù)類合同6篇
- 江蘇省七市2025屆高三最后一卷物理試卷含解析
評論
0/150
提交評論