醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告論文_第1頁
醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告論文_第2頁
醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告論文_第3頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.信息工程學(xué)院數(shù)據(jù)庫課程設(shè)計論文題 目:醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫設(shè)計學(xué) 號:2012013324專業(yè)班級:軟件工程121班姓 名:X桐指導(dǎo)老師:蔚繼承完成日期:2014年06月20日. v.醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫設(shè)計X桐(信息工程學(xué)院軟件工程12級1班)摘 要:隨著社會的進(jìn)步和人類生產(chǎn)生活水平的提高,國內(nèi)現(xiàn)有的醫(yī)院不論從規(guī)模上還是服務(wù)質(zhì)量上都實現(xiàn)了顯著增長。顯然,如果醫(yī)院門診仍采用人工管理的方式顯然無法應(yīng)對龐大的病患需求。如今,科學(xué)與發(fā)展已成為時代的主題。在中國軟件行業(yè)日益進(jìn)步的今天,我們可以利用這些資源來幫助減輕醫(yī)生和病人的負(fù)擔(dān),讓病人能夠盡快就醫(yī)。一個高質(zhì)量的醫(yī)院門診管理系統(tǒng),能提高醫(yī)院的社

2、會效益與經(jīng)濟效益。本文采用結(jié)構(gòu)化分析和設(shè)計方法,運用數(shù)據(jù)流程圖和E-R圖等工具對小型醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫進(jìn)行分析和設(shè)計,實現(xiàn)登記掛號、診斷治療、收費掛號等醫(yī)院門診的基本業(yè)務(wù)。關(guān)鍵字:醫(yī)院門診管理;數(shù)據(jù)庫設(shè)計;醫(yī)院. v.目 錄1 需求分析11.1數(shù)據(jù)流程圖11.2數(shù)據(jù)字典41.2.1數(shù)據(jù)項41.2.2數(shù)據(jù)結(jié)構(gòu)51.2.3數(shù)據(jù)流61.2.4.處理邏輯61.2.5.數(shù)據(jù)存儲72數(shù)據(jù)庫結(jié)構(gòu)設(shè)計72.1 概念設(shè)計72.1.1 分E-R圖建立72.1.2 全局/整體E-R圖82.2 邏輯設(shè)計92.2.1 建立關(guān)系模式102.2.2 關(guān)系模式規(guī)X化處理102.2.3 用戶子模式建立112.2.4 關(guān)系模

3、式邏輯結(jié)構(gòu)定義113數(shù)據(jù)庫物理設(shè)計134數(shù)據(jù)庫實施與測試134.1 SQL Server 2008數(shù)據(jù)庫實施與測試134.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立134.1.2 數(shù)據(jù)入庫214.1.3 數(shù)據(jù)庫測試234.2 Oracle數(shù)據(jù)庫實施與測試304.2.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立304.2.2 數(shù)據(jù)入庫414.2.3 數(shù)據(jù)庫測試435 總結(jié)49. v.隨著社會不斷的進(jìn)步,醫(yī)院等基礎(chǔ)服務(wù)機構(gòu),早已成為了人們生活必不可少的一部分,在很大程度上方便了人們的生活。為了在更大程度上滿足病患的需求,許多醫(yī)院的規(guī)模進(jìn)一步擴大,管理也進(jìn)一步改善。逐步走向醫(yī)療服務(wù)和管理的成熟化。而方便有效的管理手段已經(jīng)成為了所

4、有管理部門管理的有力工具。傳統(tǒng)的人工管理手段在高速發(fā)展的今天,已經(jīng)不再體現(xiàn)其優(yōu)勢,繁復(fù)和大量的手工記錄和計算給管理帶來了更多的重復(fù)工作,如果能將復(fù)雜的各類管理過程封裝在一個操作中,執(zhí)行每個管理步驟時使用相對應(yīng)的功能,那就能給管理者帶來更大的便捷。數(shù)據(jù)庫設(shè)計的目標(biāo)就是為用戶和各種應(yīng)用系統(tǒng)提供一個信息基礎(chǔ)設(shè)施和高效的運行環(huán)境。隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟,其強大的功能已為人們深刻認(rèn)識,它已經(jīng)進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。作為計算機應(yīng)用的一部分,使用計算機對醫(yī)院門診信息進(jìn)行管理,具有比手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大等。這些優(yōu)點能

5、夠極大地提高人事勞資管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理的重要條件。針對典型的管理系統(tǒng),以醫(yī)院門診管理為載體,設(shè)計醫(yī)院門診管理系統(tǒng)。以滿足門診管理者對各類數(shù)據(jù)的管理,以現(xiàn)代化的思維模式去經(jīng)營維護(hù)。1 需求分析需求分析階段就是分析用戶的需求,是數(shù)據(jù)庫設(shè)計的起點。醫(yī)院門診管理的主要目標(biāo)是通過醫(yī)院門診的整個服務(wù)流程的管理和控制及對庫存數(shù)據(jù)有效的統(tǒng)計和分析,以保證管理的暢通,使決策人員及早發(fā)現(xiàn)問題,采取相應(yīng)措施,調(diào)整管理方式。同時,通過數(shù)據(jù)分析,可以獲得當(dāng)前社會的病患需求,也便于管理人員不斷進(jìn)行管理的優(yōu)化和提高管理水平。通過查詢資料和分析當(dāng)前的醫(yī)院門診部服務(wù)狀況,明確病患的需求而進(jìn)行設(shè)計。并完成業(yè)

6、務(wù)流程圖和數(shù)據(jù)流程圖。進(jìn)一步創(chuàng)建數(shù)據(jù)字典,完成數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理功能模塊。1.1數(shù)據(jù)流程圖數(shù)據(jù)流程圖反映的是醫(yī)院門診管理工作過程的數(shù)據(jù)去向和流向。通過數(shù)據(jù)流程圖,抽象現(xiàn)實世界的數(shù)據(jù)到醫(yī)院門診管理的物理模型。再根據(jù)這個物理模型要抽象出信息流,將物理模型轉(zhuǎn)化成邏輯模型,反映信息在系統(tǒng)中的流動、處理和存儲情況,在整個過程中,所得到的數(shù)據(jù)流程圖可如下圖1-1至圖1-5所示,分為頂層數(shù)據(jù)流圖、第一層數(shù)據(jù)流圖和第二層數(shù)據(jù)流圖。圖1-1 頂層數(shù)據(jù)流程圖圖1-2 第一層數(shù)據(jù)流程圖圖1-3 第二層數(shù)據(jù)流程圖(掛號收費)圖1-4 第二層數(shù)據(jù)流程圖(診斷)圖1-5 第二層數(shù)據(jù)流程圖(取藥)1.2數(shù)據(jù)字典數(shù)據(jù)字典是體

7、統(tǒng)中各類數(shù)據(jù)描述的集合,是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要成果。數(shù)據(jù)字典在數(shù)據(jù)庫設(shè)計中占有很重要的地位。數(shù)據(jù)字典通常包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理邏輯5個部分。數(shù)據(jù)項是不可再分的數(shù)據(jù)單位。數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂?。?shù)據(jù)存儲是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方也是數(shù)據(jù)流的來源和去向之一。處理邏輯一般用判定表或判定樹來描述。數(shù)據(jù)字典是需要描述處理過程的說明性信息。本文中包括35個數(shù)據(jù)項,8個數(shù)據(jù)結(jié)構(gòu),11個數(shù)據(jù)流,6個處理邏輯,8個數(shù)據(jù)存儲。1.2.1數(shù)據(jù)項數(shù)據(jù)項編號數(shù)據(jù)項名數(shù)據(jù)項含義與其他數(shù)據(jù)項關(guān)系類型長度取值X圍DI01-1Pno病人編號

8、主鍵varchar20DI01-2Pname病人XXvarchar20not nullDI01-3Psex性別varchar20DI01-4Page年齡int0-150DI01-5Dno醫(yī)生號外鍵varchar20DI02-1Dno醫(yī)生號主鍵varchar20DI02-2Dname醫(yī)生XXvarchar20not nullDI02-3Dtitle職稱varchar20DI02-4Dtelvarchar20DI02-5Dp_no科室編號外鍵varchar20DI03-1Dp_no科室編號主鍵varchar20DI03-2Dp_name科室名稱varchar20not nullDI03-3Dp_t

9、ell聯(lián)系方式varchar20DI04-1Mno藥品編號主鍵varchar20DI04-2Mname藥品名稱varchar20not nullDI04-3Mprice藥品價格floatDI04-4Mquantity藥品庫存余量intDI05-1Rno掛號單號主鍵varchar20DI05-2Rdate掛號日期dateDI05-3Bno收費單號外鍵varchar20DI05-4Pno病人編號外鍵varchar20DI05-5Dno醫(yī)生編號外鍵varchar20DI05-6Rway掛號方式varchar20DI06-1Bno收費單號主鍵varchar20DI06-2Bdate日期dateDI06

10、-3Bmoney金額floatDI06-4Bway收費方式varchar20DI07-1Pr_no處方號主鍵varchar20DI07-2Pr_date日期dateDI07-3Mno藥品編號外鍵varchar20DI07-4Bno收費單號外鍵varchar20DI08-1Dno醫(yī)生號主鍵、外鍵varchar20DI08-2Pno病人編號主鍵、外鍵varchar20DI08-3Iname病名varchar20DI08-4Pr_no處方號外鍵varchar201.2.2數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)編號數(shù)據(jù)結(jié)構(gòu)名數(shù)據(jù)結(jié)構(gòu)含義組成DS-1Doctor醫(yī)生Dno,Dname,Dtitle,Ddept,DtelDS-

11、2Patient病人Pno,Pname,Psex,Page,DnoDS-3Medicine藥品Mno,Mname,Mprice,MquantityDS-4Department科室Dp_no,Dp_name,Dp_telDS-5Register掛號單Rno,Rway,Rdate,Pno,BnoDS-6Bill收費單Bno,Bdate,Bmoney,BwayDS-7Prescription處方Pr_no,Pr_date,Mno,BnoDS-8Diagnose診斷結(jié)果Dno,Pno,Iname,Pr_no1.2.3數(shù)據(jù)流數(shù)據(jù)流編號數(shù)據(jù)流名稱簡述數(shù)據(jù)流來源數(shù)據(jù)流去向數(shù)據(jù)流組成數(shù)據(jù)流量高峰流量F1掛號請

12、求病人來到醫(yī)院對所需的治療或者看病項目的掛號病人掛號處理病人信息、分配醫(yī)師每日1000人每日5000人F2掛號單處理病人的掛號,由病人信息生成掛號單掛號處理病人病人、醫(yī)生、掛號單編號每日1000次每日5000次F3繳費對于各項醫(yī)療必須費用進(jìn)行繳費病人收費處理收費信息每日1000次每日5000次F4收費憑證病人繳費后獲取收費憑證以備后續(xù)使用收費處理病人收費信息、詳細(xì)記錄每日1000次每日5000次F5看病病人到相關(guān)科室進(jìn)行初診病人初診處理病人信息、初診信息每日1000人每日5000人F6處方、病例醫(yī)師對病人開處方、填寫病例確診處理病人病人、處方信息、病例信息每日1000次每日5000次F7取藥病

13、人到藥房領(lǐng)取相關(guān)藥品病人取藥處理病人、藥品信息每日1000次每日5000次F8藥物藥房工作人員依照處方把相關(guān)藥品交給病人取藥處理病人病人、藥品每日1000次每日5000次F9掛號項目掛號系統(tǒng)針對病人的掛號項目為其分配醫(yī)師掛號處理分配醫(yī)師處理病人信息、分配醫(yī)師、科室每日1000次每日5000次F10醫(yī)師信息系統(tǒng)調(diào)用相關(guān)醫(yī)師信息返回分配醫(yī)師處理掛號處理醫(yī)生每日1000次每日5000次F11診斷信息將診斷信息整理匯總,最后確診診斷處理確診病人、治療記錄每日1000次每日5000次1.2.4.處理邏輯處理邏輯處理邏輯名稱簡述輸入的數(shù)據(jù)流處理輸出的數(shù)據(jù)流處理頻率P1.1掛號對病人掛號請求的處理病人信息分

14、配醫(yī)師掛號單每人1次P1.2收費收費內(nèi)容和標(biāo)準(zhǔn)收費內(nèi)容收取費用收費記錄每人1次P1.3分配醫(yī)師根據(jù)掛號記錄分配醫(yī)師醫(yī)生記錄分配醫(yī)師醫(yī)生信息每人1次P2.1診斷醫(yī)生對病情進(jìn)行診斷診斷請求初步診斷初診信息每人1次P2.2確診完成診斷,確診診斷信息確診診斷結(jié)果每人1次P3.1取藥取藥處方取藥藥物信息每人1次1.2.5.數(shù)據(jù)存儲數(shù)據(jù)存儲編號數(shù)據(jù)存儲名稱簡述數(shù)據(jù)存儲組成相關(guān)的處理S1掛號記錄用于記錄病人的掛號信息病人信息、醫(yī)生P1.1,P2.1,P3.1S2收費記錄用于記錄收費信息收費信息P1.2,P2.2,P3.2,P3.3S3值班醫(yī)生記錄記錄醫(yī)生的值班安排醫(yī)生值班安排P3.1S4診斷記錄記錄病人的診

15、斷過程診斷過程P2.3,P3.1S5藥物記錄用于記錄藥物價格剩余量等藥物信息P3.2S6收費款項用于記錄收費情況收費信息P1.2S7收費標(biāo)準(zhǔn)用于統(tǒng)一收費的標(biāo)準(zhǔn)收費款項標(biāo)準(zhǔn)P1.2S8處方用于記錄醫(yī)生對病人開出的處方處方P3.22數(shù)據(jù)庫結(jié)構(gòu)設(shè)計數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計主要包括概念設(shè)計和邏輯設(shè)計兩個部分。2.1 概念設(shè)計概念設(shè)計階段的任務(wù)是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過程。要能充分的反應(yīng)事物與事物之間的聯(lián)系,是對現(xiàn)實世界的一個真實模型。在需求分析階段得到的應(yīng)用需求首先抽象為信息世界的結(jié)構(gòu)才能更好的用某一DBMS實現(xiàn)這些需求。E-R模型是概念模型的有力工具。逐一設(shè)計分E-R圖,再將所

16、有的分E-R圖綜合成系統(tǒng)的總E-R圖。2.1.1 分E-R圖建立圖2-2 分ER圖分E-R圖的建立依據(jù)于數(shù)據(jù)流圖的建立。以下可從第二層數(shù)據(jù)流圖分別建立分E-R圖。詳見圖2-1至2-3。圖2-1 分ER圖2.診斷分ER圖圖2-3 分ER圖2.1.2 全局/整體E-R圖根據(jù)上述列出的分E-R圖,消除其中存在的沖突、冗余,建立全局E-R圖(詳見圖2-4),并列出所有實體和聯(lián)系屬性的屬性E-R圖(詳見圖2-5)圖2-4 總ER圖圖2-5 屬性ER圖2.2 邏輯設(shè)計邏輯結(jié)構(gòu)設(shè)計的任務(wù)就是把概念結(jié)構(gòu)設(shè)計階段設(shè)計好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。根據(jù)DBMS產(chǎn)品以及不

17、同系統(tǒng)的限制,設(shè)計邏輯結(jié)構(gòu)時一般有以下三個步驟:首先將概念結(jié)構(gòu)轉(zhuǎn)換為一般的關(guān)系、網(wǎng)狀、層次模型;將轉(zhuǎn)換來的關(guān)系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換;最后對數(shù)據(jù)模型進(jìn)行優(yōu)化。醫(yī)院門診管理系統(tǒng)的設(shè)計采用關(guān)系模型。E-R圖轉(zhuǎn)化為關(guān)系模型實際上就是要將實體型、實體的屬性和實體型之間的聯(lián)系轉(zhuǎn)換為關(guān)系模式。一個實體型轉(zhuǎn)換為一個關(guān)系模式。實體的屬性就是關(guān)系的屬性,實體的碼就是關(guān)系的碼。對于實體型間的聯(lián)系有以下不同的情況:(1)一個1:1聯(lián)系可以轉(zhuǎn)換為一個獨立的關(guān)系模式,也可以與任意一端對應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個獨立的關(guān)系模式,則與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬

18、性。(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)系的屬性。(3)一個m:n聯(lián)系轉(zhuǎn)換為一個關(guān)系模式,與該聯(lián)系相連的各實體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實體的碼組成關(guān)系的碼或關(guān)系的碼的一部分。2.2.1 建立關(guān)系模式醫(yī)院門診管理系統(tǒng)涉及到的關(guān)系主要有:病人和醫(yī)生為n:1(多對一)的關(guān)系,將其之間的聯(lián)系與n端實體合并。病人和掛號單的關(guān)系為1:1(一對一),將其之間的聯(lián)系與任意一端實體合并。科室和醫(yī)生為1:n(一對多)的關(guān)系,將其之間的聯(lián)系與n端實體合并。醫(yī)生和診斷結(jié)

19、果的關(guān)系為1:n(一對多)的關(guān)系,也將其之間的聯(lián)系與n端實體合并。診斷結(jié)果和處方單的關(guān)系為1:1(一對一),將其之間的聯(lián)系與任意一端實體合并。處方單、收費單和藥品之間的聯(lián)系為三元的關(guān)系,將它們之間的聯(lián)系轉(zhuǎn)換為獨立的關(guān)系模式。具體的轉(zhuǎn)換如下所示(主鍵加下劃線,外鍵斜體加粗):病人(病人編號,病人XX,性別,年齡,醫(yī)生號)醫(yī)生(醫(yī)生號,醫(yī)生XX,職稱,科室號)藥品(藥品編號,藥品名稱,單價,數(shù)量)處方(處方號,日期,藥品編號,收費單號)收費單(收費單號,日期,金額,收費方式)診斷結(jié)果(醫(yī)生號,病人編號,病名,處方號)掛號單(掛號單號,掛號方式,日期,病人編號,收費單號)科室(科室號,科室名稱,聯(lián)系

20、方式)2.2.2 關(guān)系模式規(guī)X化處理關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的規(guī)X化要求,對于不同的規(guī)X化程度可用X式來衡量。X式是符合某一種級別的關(guān)系模式的集合,是衡量關(guān)系模式規(guī)X化程度的標(biāo)準(zhǔn),達(dá)到的關(guān)系才是規(guī)X化的。一個低一級X式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個高一級X式的關(guān)系模式的集合。在本系統(tǒng)中,所有建立的關(guān)系模式都符合三X式。2.2.3 用戶子模式建立根據(jù)需求分析,研究建立滿足不同需求的用戶子模式,各個子模式的建立在更大程度上方便數(shù)據(jù)操作。用戶子模式的定義如下:收費細(xì)則視圖(病人號,收費單號,日期,金額,收費方式)病人-藥品視圖(病人號,藥品編號)診斷結(jié)果視圖(病人號,病人XX,病名)

21、醫(yī)生病人視圖(醫(yī)生號,醫(yī)生XX,病人XX)科室醫(yī)生視圖(醫(yī)生號,醫(yī)生XX,科室名稱)病人掛號視圖(病人號,病人XX,掛號單號,掛號日期,掛號方式)2.2.4 關(guān)系模式邏輯結(jié)構(gòu)定義表2-6病人關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Pno病人編號varchar20是Pname病人XXvarchar20not nullPsex性別varchar20Page年齡int0-150Dno醫(yī)生號varchar20是表2-7醫(yī)生關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Dno醫(yī)生號varchar20是Dname醫(yī)生XXvarchar20not nullDtitle職稱v

22、archar20Ddept科室號varchar20是Dtelvarchar20表2-8藥品關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Mno藥品編號varchar20是Mname藥品名稱varchar20not nullMprice單價floatMquantity數(shù)量int表2-9處方單關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Pr_no處方號varchar20是Pr_date日期dateMno藥品編號varchar20是Bno收費單號varchar20是表2-10收費單關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Bno收費單號varchar2

23、0是Bdate日期dateBmoney金額float20Bway收費方式varchar20表2-11診斷結(jié)果關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Dno醫(yī)生號varchar20是是Pname病人XXvarchar20是是Iname病名Pr_no處方號varchar20是表2-12掛號單關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束條件Rno掛號單號varchar20是Rway掛號方式varchar20Rdate日期datePname病人XXvarchar20是Bno收費單號varchar20是表2-13科室關(guān)系模式屬性名含義數(shù)據(jù)類型長度是否為主屬性是否為外鍵約束

24、條件Dp_no科室號varchar20是Dp_name科室名稱varchar20not nullDp_tel聯(lián)系方式varchar203數(shù)據(jù)庫物理設(shè)計主要包括數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法就是數(shù)據(jù)庫的物理結(jié)構(gòu),它依賴于選定的數(shù)據(jù)庫管理系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最合適的應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計。這一階段主要的任務(wù)是確定數(shù)據(jù)庫的物理結(jié)構(gòu),并不斷的進(jìn)行優(yōu)化處理,主要建立索引、觸發(fā)器、存儲過程。索引名稱索引類型用途idx_bno唯一、非聚集按bno屬性列升序排列unique_pname唯一、非聚集實現(xiàn)唯一性約束unique_mname唯一、非聚集實現(xiàn)唯一性約束

25、4數(shù)據(jù)庫實施與測試主要包括數(shù)據(jù)庫實施和測試兩個部分。(下面分別寫出SQL Server 2008和Oracle的實施測試過程)4.1 SQL Server 2008數(shù)據(jù)庫實施與測試4.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立本系統(tǒng)建立名為Hospital的數(shù)據(jù)庫。數(shù)據(jù)庫對象分為基本表、視圖、索引、觸發(fā)器、存儲過程等。下面分別列出相關(guān)代碼。1.基本表create table Department (Dp_no varchar(20) primary key, Dp_name varchar(20) not null, Dp_tel varchar(20) ) create table Doctor (Dn

26、o varchar(20) primary key, Dname varchar(20) not null, Dtitle varchar(20), Dp_no varchar(20) references Department(Dp_no), Dtel varchar(20) )create table Patient(Pno varchar(20) primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20) references

27、Doctor(Dno) create table Medicine (Mno varchar(20) primary key, Mname varchar(20) not null, Mprice float, Mquantity int ) create table Bill (Bno varchar(20) primary key, Bdate date, Bmoney float, Bway varchar(20) ) create table Prescription (Pr_no varchar(20) primary key, Pr_date date, Mno varchar(2

28、0) references Medicine(Mno), Bno varchar(20) references Bill(Bno) ) create table Diagnose (Dno varchar(20) references Doctor(Dno), Pno varchar(20) references Patient(Pno), Iname varchar(20), Pr_no varchar(20) references Prescription(Pr_no), primary key(Dno,Pno) ) create table Register (Rno varchar(2

29、0) primary key, Rway varchar(20), Rdate date, Pno varchar(20) references Patient(Pno), Bno varchar(20) references Bill(Bno) )2.視圖(1)收費細(xì)則視圖(BillDetail)create view BillDetailasselect distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bwayfrom Prescription,Bill,Diagnose,Registerwhere Register.pno=Diagnose.pno

30、 and (Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-藥品視圖(Patient_Med)create view Patient_Medasselect Pno,Mnamefrom Medicine,Prescription,Diagnosewhere Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)診斷結(jié)果視圖(Patient_Diag)create vie

31、w Patient_Diagasselect Patient.pno,pname,inamefrom Patient,Diagnosewhere Diagnose.Pno=Patient.pno(4)醫(yī)生病人視圖(Docter_Patient)create view Docter_Patientasselect Doctor.dno,dname,pnamefrom Patient,Doctorwhere Patient.dno=Doctor.dno(5)科室醫(yī)生視圖(Dept_Doctor)create view Dept_Doctorasselect dno,dname,Dp_namefro

32、m Doctor,Departmentwhere Department.Dp_no=Doctor.Dp_no(6)病人掛號視圖(Patient_Register)create view Patient_Registerasselect Patient.pno,pname,rno,rway,rdatefrom Patient,Registerwhere Register.pno=Patient.pno3.索引create unique index unique_mname on Medicine(Mname)create unique index unique_pname on Patient(

33、pname)create index idx_bno on Bill(bno asc)4.存儲過程(1)當(dāng)有患者通過不同的方式掛號時,要在Register新增一條掛號信息,同時在Patient表添加一個病人記錄,在Bill表中添加一條掛號收費記錄create proc addpatientRno varchar(20),Rway varchar(20),Pno varchar(20),Bno varchar(20),Pname varchar(20),Psex varchar(20),Page int,Dno varchar(20),Bmoney floatasinsert into Pati

34、entvalues(Pno,Pname,Psex,Page,Dno)insert into Billvalues(Bno,GETDATE(),Bmoney,'掛號收費')insert into Registervalues(Rno,Rway,GETDATE(),Pno,Bno)(2)一個患者確診完畢,向Diagnose新增一條診斷結(jié)果記錄,同時在Prescription表添加一條處方記錄,并更新Bill表中相應(yīng)收費信息create proc addDiagnoseDno varchar(20),Pno varchar(20),Iname varchar(20),Pr_no va

35、rchar(20),Mno varchar(20),Bno varchar(20),Bmoney floatasinsert into Billvalues(Bno,GETDATE(),Bmoney,'藥品收費')insert into Prescriptionvalues(Pr_no,GETDATE(),Mno,Bno)insert into Diagnosevalues(Dno,Pno,Iname,Pr_no)(4)插入一條藥品信息create proc MedicineInsertmno varchar(20),mname varchar(20),mprice float

36、,mquantity intasinsert into Medicinevalues(Mno,Mname,Mprice,Mquantity)(4)修改某一科室的create proc change_teldp_no varchar(20),Dp_tel varchar(20)asupdate Departmentset dp_tel=Dp_telwhere Dp_no=dp_no(5)修改某一藥品剩余量create proc change_medmno varchar(20),mquantity intasupdate Medicineset mquantity=mquantitywhere

37、mno=mno(6)在Dept_Doctor查詢醫(yī)院門診部各個科室的醫(yī)生人數(shù)create proc Dept_Docasselect Dp_name,COUNT(dno) as rsfrom Dept_Doctorgroup by Dp_name(7)在Docter_Patient查詢某一病人的主治醫(yī)生信息create proc p_doctorpname varchar(20)asselect *from Doctorwhere Dno =(select Dno from Docter_Patient where pname=pname)(8)在Docter_Patient查詢某一醫(yī)生主治的

38、全部病人信息create proc D_Patientdno varchar(20)asselect pno,pname,psex,pagefrom Patientwhere pname in(select pname from Docter_Patient where dno=dno)(9)在Patient_Diag查詢患感冒的病人XXcreate proc Diag_passelect pnamefrom Patient_Diagwhere iname='感冒'(10)在Patient_Diag查詢某一病人的診斷結(jié)果create proc p_Diagpno varchar

39、(20)asselect inamefrom Patient_Diagwhere pno=pno(11)在Patient_Med查詢某病人購買的藥品create proc p_Medpno varchar(20)asselect mnamefrom Patient_Medwhere pno=pno(12)在BillDetail查詢某病人購買的藥品總價create proc medpaypno varchar(20)asselect Bway,bmoneyfrom BillDetailwhere pno=pno and Bway='藥品收費'(13)在BillDetail查詢某一

40、病人的收費總和(=掛號+取藥)create proc paypno varchar(20)asselect sum(bmoney) as totalfrom BillDetailwhere pno=pno group by pno(14)在Patient_Register查詢某病人的掛號方式create proc reg_waypno varchar(20)asselect rway from Patient_Registerwhere pno=pno 5.觸發(fā)器當(dāng)向處方表(Prescription)中添加元組時,同步對表Medicine的級聯(lián)更新。(藥品數(shù)量-1)create trigger

41、 t1 on Prescriptionafter insert,updateas declare pr_no varchar(20),mno varchar(20)declare c2 cursor for select pr_no,mno from inserted open c2 fetch next from c2 into pr_no,mnowhile(fetch_status=0)beginupdate Medicineset mquantity=mquantity-1where mno=mnofetch next from c2 into pr_no,mnoendclose c2d

42、eallocate c24.1.2 數(shù)據(jù)入庫Patient表Register表Department表Doctor表Medicine表Prescription表Diagnose表Bill表4.1.3 數(shù)據(jù)庫測試1.視圖病人-藥品視圖(Patient_Med)收費細(xì)則視圖(BillDetail)診斷結(jié)果視圖(Patient_Diag)醫(yī)生病人視圖(Docter_Patient)科室醫(yī)生視圖(Dept_Doctor)病人掛號視圖(Patient_Register)2.驗證存儲過程(1)當(dāng)有患者通過不同的方式掛號時,要在Register新增一條掛號信息,同時在Patient表添加一個病人記錄,在Bil

43、l表中添加一條掛號收費記錄(2)一個患者確診完畢,向Diagnose新增一條診斷結(jié)果記錄,同時在Prescription表添加一條處方記錄,并更新Bill表中相應(yīng)收費信息(3)插入一條藥品信息(4)修改某一科室的(5)修改某一藥品剩余量(6)在Dept_Doctor查詢醫(yī)院門診部各個科室的醫(yī)生人數(shù)(7)在Docter_Patient查詢某一病人的主治醫(yī)生信息(8)在Docter_Patient查詢某一醫(yī)生主治的全部病人信息(9)在Patient_Diag查詢患感冒的病人XX(10)在Patient_Diag查詢某一病人的診斷結(jié)果(11)在Patient_Med查詢某病人購買的藥品(12)在Bi

44、llDetail查詢某病人購買的藥品總價(13)在BillDetail查詢某一病人的收費總和(=掛號+取藥)(14)在Patient_Register查詢某病人的掛號方式3.驗證觸發(fā)器(見存儲過程2的驗證)4.2 Oracle數(shù)據(jù)庫實施與測試4.2.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立本系統(tǒng)建立名為Hospital的數(shù)據(jù)庫。數(shù)據(jù)庫對象分為基本表、視圖、存儲過程等。下面分別列出相關(guān)代碼。1.基本表create table Department (Dp_no varchar(20) primary key, Dp_name varchar(20) not null, Dp_tel varchar(20) )

45、 create table Doctor (Dno varchar(20) primary key, Dname varchar(20) not null, Dtitle varchar(20), Dp_no varchar(20) references Department(Dp_no), Dtel varchar(20) )create table Patient(Pno varchar(20) primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno

46、 varchar(20) references Doctor(Dno) create table Medicine (Mno varchar(20) primary key, Mname varchar(20) not null, Mprice float, Mquantity int ) create table Bill (Bno varchar(20) primary key, Bdate date, Bmoney float, Bway varchar(20) ) create table Prescription (Pr_no varchar(20) primary key, Pr_

47、date date, Mno varchar(20) references Medicine(Mno), Bno varchar(20) references Bill(Bno) ) create table Diagnose (Dno varchar(20) references Doctor(Dno), Pno varchar(20) references Patient(Pno), Iname varchar(20), Pr_no varchar(20) references Prescription(Pr_no), primary key(Dno,Pno) ) create table

48、 Register (Rno varchar(20) primary key, Rway varchar(20), Rdate date, Pno varchar(20) references Patient(Pno), Bno varchar(20) references Bill(Bno) )2.視圖(1)收費細(xì)則視圖(BillDetail)create view BillDetailasselect distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bwayfrom Prescription,Bill,Diagnose,Registerwhere R

49、egister.pno=Diagnose.pno and (Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-藥品視圖(Patient_Med)create view Patient_Medasselect Pno,Mnamefrom Medicine,Prescription,Diagnosewhere Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)診斷結(jié)果視圖

50、(Patient_Diag)create view Patient_Diagasselect Patient.pno,pname,inamefrom Patient,Diagnosewhere Diagnose.Pno=Patient.pno(4)醫(yī)生病人視圖(Docter_Patient)create view Docter_Patientasselect Doctor.dno,dname,pnamefrom Patient,Doctorwhere Patient.dno=Doctor.dno(5)科室醫(yī)生視圖(Dept_Doctor)create view Dept_Doctorassel

51、ect dno,dname,Dp_namefrom Doctor,Departmentwhere Department.Dp_no=Doctor.Dp_no(6)病人掛號視圖(Patient_Register)create view Patient_Registerasselect Patient.pno,pname,rno,rway,rdatefrom Patient,Registerwhere Register.pno=Patient.pno3.存儲過程(1)當(dāng)有患者通過不同的方式掛號時,要在Register新增一條掛號信息,同時在Patient表添加一個病人記錄,在Bill表中添加一條掛號收費記錄create or replace p

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論