




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、大連大學(xué)信息工程學(xué)院數(shù)據(jù)庫系統(tǒng)課程設(shè)計(jì)報(bào)告題 目:客運(yùn)公司營運(yùn)信息管理系統(tǒng) -排班子系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 計(jì)作 者 姓 名: 羅樂 陸倩倩 專業(yè)、班級 : 軟件131班 學(xué) 號 :13427003 13427027 指 導(dǎo) 教 師: 張 敏 完 成 日 期: 2015/6/25 11客運(yùn)公司營運(yùn)信息管理系統(tǒng)排班子系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)目錄1需求分析21.1 引言21.2 需求分析階段的目標(biāo)與任務(wù)21.2.1 處理對象21.2.2 處理功能及要求21.2.3 安全性和完整性要求21.3需求分析階段成果21.3.1 數(shù)據(jù)流圖21.3.2 數(shù)據(jù)字典42數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)12.1 概念設(shè)計(jì)12.2 邏輯設(shè)計(jì)12.2.1
2、 建立關(guān)系模式12.2.2關(guān)系及函數(shù)依賴:22.2.3 關(guān)系模式規(guī)范化處理32.2.4 用戶子模式建立32.2.5 關(guān)系模式邏輯結(jié)構(gòu)定義33數(shù)據(jù)庫物理設(shè)計(jì)13.1索引的設(shè)計(jì)13.2存儲過程的設(shè)計(jì)13.3觸發(fā)器的設(shè)計(jì)13.4視圖的設(shè)計(jì)14數(shù)據(jù)庫實(shí)施與測試14.1 數(shù)據(jù)庫實(shí)施14.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立14.1.2 數(shù)據(jù)入庫14.2 數(shù)據(jù)庫測試14.2.1 視圖14.2.2存儲過程測試14.2.3觸發(fā)器測試35總結(jié)5附錄1 關(guān)系模式說明1附錄2 SQl數(shù)據(jù)定義語句11需求分析1.1 引言需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的需求,在此基礎(chǔ)上確
3、定系統(tǒng)功能。通過調(diào)查獲得用戶的信息要求,處理要求,安全性要求與完整性處理。 我們負(fù)責(zé)客運(yùn)管理系統(tǒng)營運(yùn)子系統(tǒng)中的排班工作,在這項(xiàng)工作中,分為線路及站點(diǎn)統(tǒng)計(jì),駕駛員信息管理,班次的統(tǒng)計(jì)以及根據(jù)班次,路線對駕駛員進(jìn)行排班這四個(gè)步驟。1.2 需求分析階段的目標(biāo)與任務(wù)1.2.1 處理對象 駕駛員,車輛,線路,站點(diǎn),班次,排班。1.2.2 處理功能及要求 根據(jù)線路,駕駛員,運(yùn)行車輛,駕駛員休假情況以及車輛維修情況進(jìn)行排班。1.2.3 安全性和完整性要求 1) 安全性要求 系統(tǒng)安全性要求體現(xiàn)在數(shù)據(jù)庫安全性、信息安全性和系統(tǒng)平臺的安全性等方面。安全性先通過視圖機(jī)制,不同的用戶只能訪問系統(tǒng)授權(quán)的視圖,這樣可提供
4、系統(tǒng)數(shù)據(jù)一定程度上的安全性,再通過分配權(quán)限、設(shè)置權(quán)限級別來區(qū)別對待不同操作者對數(shù)據(jù)庫的操作來提高數(shù)據(jù)庫的安全性;系統(tǒng)平臺的安全性體現(xiàn)在操作系統(tǒng)的安全性、計(jì)算機(jī)系統(tǒng)的安全性和網(wǎng)絡(luò)體系的安全性等方面。2) 完整性要求系統(tǒng)完整性要求包括實(shí)體完整性,參照完整性,用戶自定義完整性。其中,實(shí)體完整性是通過建立主鍵來實(shí)現(xiàn),參照完整性是通過外鍵來實(shí)現(xiàn)的,用戶自定義完整性是使用check約束實(shí)現(xiàn)的,除此之外,還可以通過使用觸發(fā)器和級聯(lián)更新。1.3需求分析階段成果1.3.1 數(shù)據(jù)字典 一、 數(shù)據(jù)項(xiàng) 數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:休假結(jié)束時(shí)間編號:DI-2別名:vacation_EndDate類型
5、長度:Date&Time描述:司機(jī)休息的結(jié)束時(shí)間數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:與上一站間隔編號:DI-1別名:interval類型長度:float描述:兩個(gè)相鄰站點(diǎn)的間隔數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:休假起始時(shí)間編號:DI-4別名:vacation_StartDate類型長度:Date&Time描述:司機(jī)休息的開始時(shí)間數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:休假編號編號:DI-3別名:vacation_id類型長度:char(10)描述:休假司機(jī)的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:姓名編號:DI-6別名:Employees_name類型長度:char(20)描述:司機(jī)的姓名數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:發(fā)車時(shí)間編號:DI-5別名:leave_
6、time類型長度:Time描述:車輛的發(fā)車時(shí)間數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:序號_排班情況編號:DI-8別名:arrangeNum類型長度:int描述:排班的序號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:工號編號:DI-7別名:driver_id類型長度:char(10)描述:司機(jī)的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:序號_駕駛員離職表編號:DI-10別名:leaveDriver_num類型長度:int描述:離職表的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:車牌號編號:DI-9別名:license-number類型長度:varchar(15)描述:車輛的車牌號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:所屬部門編號:DI-11別名:Employees_departme
7、nt類型長度:char(50)描述:職員所在部門數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:班次序號編號:DI-12別名:order_num類型長度:int描述:班次的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:排班日期編號:DI-14別名:arrangedate類型長度:Date描述:排班的日期數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:站點(diǎn)名稱編號:DI-13別名:station_name類型長度:char(30)描述:站點(diǎn)的名稱,是一個(gè)唯一性索引數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:站點(diǎn)編號編號:DI-15別名:station_id類型長度:char(10)描述:站點(diǎn)的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:線路名稱編號:DI-16別名:route_name類型長度:char(
8、30)描述:行駛線路的名稱,,是一個(gè)唯一性索引數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:維修記錄編號編號:DI-18別名:CarMaintenance_id類型長度:char(10)描述:維修車輛的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:線路編號編號:DI-17別名:route_id類型長度:char(10)描述:線路的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:職位編號:DI-20別名:Employes_title類型長度:char(50)描述:員工的職位數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:維修起始日期編號:DI-19別名:CarMaintenance_StartDate類型長度:Date描述:車輛開始維修的日期數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:駕駛員工號編號:DI-
9、22別名:driver_num類型長度:char(10)描述:駕駛員的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:職工編號編號:DI-21別名:Employees_id類型長度:char(10)描述:職工的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:車輛自編號編號:DI-24別名:car_id類型長度:char(10)描述:車輛的編號數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:預(yù)計(jì)維修結(jié)束日期編號:DI-23別名:CarMaintenance_EndDate類型長度:Date描述:預(yù)計(jì)車輛維修結(jié)束的日期數(shù)據(jù)項(xiàng)條目數(shù)據(jù)項(xiàng)名稱:請假原因編號:DI-25別名:vacation_reason類型長度:char(1024)描述:員工請假的原因二、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)
10、構(gòu)條目數(shù)據(jù)結(jié)構(gòu)名稱:車輛工作信息編號:DS-2含義說明:說明了車輛可以行駛的時(shí)間以及維修時(shí)間組成:車輛自編號,維修起始日期,預(yù)計(jì)維修結(jié)束日期數(shù)據(jù)結(jié)構(gòu)條目數(shù)據(jù)結(jié)構(gòu)名稱:駕駛員工作信息編號:DS-1含義說明:說明了駕駛員工作的開始時(shí)間以及結(jié)束時(shí)間組成:駕駛員工號,休假起始時(shí)間,休假結(jié)束時(shí)間 數(shù)據(jù)結(jié)構(gòu)反映數(shù)據(jù)之間的組合關(guān)系三、數(shù)據(jù)流 數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂綌?shù)據(jù)流條目數(shù)據(jù)流名稱:駕駛員可正常工作時(shí)間信息編號:F1數(shù)據(jù)來源:駕駛員休假情況,各線路分配駕駛員信息數(shù)據(jù)流向:駕駛員分配情況整合數(shù)據(jù)結(jié)構(gòu):駕駛員工作信息數(shù)據(jù)流條目數(shù)據(jù)流名稱:駕駛員無法正常工作信息編號:F2數(shù)據(jù)來源:駕駛員休假情況,各
11、線路分配駕駛員信息數(shù)據(jù)流向:駕駛員調(diào)度數(shù)據(jù)結(jié)構(gòu):駕駛員工作信息數(shù)據(jù)流條目數(shù)據(jù)流名稱: 調(diào)度分配駕駛員信息編號:F3數(shù)據(jù)來源:駕駛員調(diào)度數(shù)據(jù)流向:駕駛員分配情況整合數(shù)據(jù)結(jié)構(gòu):駕駛員工作信息 數(shù)據(jù)流條目數(shù)據(jù)流名稱:實(shí)際各線路分配駕駛員情況編號:F4數(shù)據(jù)來源:駕駛員分配情況整合數(shù)據(jù)流向:駕駛員車輛組合數(shù)據(jù)結(jié)構(gòu):駕駛員工作信息數(shù)據(jù)流條目數(shù)據(jù)流名稱:車輛可正常工作時(shí)間信息編號:F5數(shù)據(jù)來源:車輛維修情況,各線路分配車輛信息數(shù)據(jù)流向:車輛分配情況整合數(shù)據(jù)結(jié)構(gòu):車輛工作信息數(shù)據(jù)流條目數(shù)據(jù)流名稱:車輛無法正常工作時(shí)間信息編號:F6數(shù)據(jù)來源:車輛維修情況,各線路分配車輛信息數(shù)據(jù)流向:車輛調(diào)配數(shù)據(jù)結(jié)構(gòu):車輛工作信
12、息數(shù)據(jù)流條目數(shù)據(jù)流名稱: 調(diào)配車輛信息編號:F7數(shù)據(jù)來源:車輛調(diào)配數(shù)據(jù)流向:車輛分配情況整合數(shù)據(jù)結(jié)構(gòu):車輛工作信息數(shù)據(jù)流條目數(shù)據(jù)流名稱: 實(shí)際各線路分配車輛情況編號:F8數(shù)據(jù)來源:車輛分配情況整合數(shù)據(jù)流向:駕駛員車輛組合數(shù)據(jù)結(jié)構(gòu):車輛工作信息四、處理過程 具體的處理過程的說明處理過程條目處理過程名稱:駕駛員檢查編號:P.01輸入數(shù)據(jù):駕駛員休假情況,各線路分配駕駛員信息,各線路班次時(shí)間輸出數(shù)據(jù): 駕駛員可正常工作的時(shí)間信息處理邏輯:根據(jù)駕駛員休假情況,各線路分配駕駛員信息以及調(diào)配車輛信息整合出每條線路可以正常工作的駕駛員。處理過程條目處理過程名稱:駕駛員調(diào)度編號:P.03輸入數(shù)據(jù):各線路分配駕
13、駛員信息,駕駛員無法正常工作的時(shí)間信息 駕駛員休假情況輸出數(shù)據(jù):調(diào)度分配駕駛員信息處理邏輯:根據(jù)各線路分配駕駛員信息以及駕駛員無法正常工作的時(shí)間信息整合出調(diào)度分配駕駛員信息處理過程條目處理過程名稱:駕駛員分配情況整合編號:P.02輸入數(shù)據(jù):駕駛員可正常工作的時(shí)間信息,調(diào)度分配駕駛員信息輸出數(shù)據(jù):實(shí)際各線路分配駕駛員情況處理邏輯:根據(jù)駕駛員可正常工作的時(shí)間信息和調(diào)度分配駕駛員信息可以整合出駕駛員分配情況處理過程條目處理過程名稱:車輛檢查編號:P.05輸入數(shù)據(jù):各線路班次時(shí)間,車輛維修情況,各線路分配車輛信息輸出數(shù)據(jù):車輛可正常工作的時(shí)間信息處理邏輯:根據(jù)各線路班次時(shí)間,車輛維修情況以及各線路分配
14、車輛信息可以得出車輛可正常工作的時(shí)間信息。處理過程條目處理過程名稱:車輛調(diào)配編號:P.07輸入數(shù)據(jù):車輛無法正常工作時(shí)間信息,各線路分配車輛信息,車輛維修情況輸出數(shù)據(jù):調(diào)配車輛信息處理邏輯:根據(jù)車輛無法正常工作時(shí)間信息,各線路分配車輛信息以及車輛維修情況可以得出調(diào)配車輛信息。處理過程條目處理過程名稱:車輛分配情況整合編號:P.06輸入數(shù)據(jù):車輛可正常工作的時(shí)間信息,調(diào)配車輛信息輸出數(shù)據(jù):實(shí)際各線路分配車輛情況處理邏輯:根據(jù)車輛可正常工作的時(shí)間信息以及調(diào)配車輛信息可以得出實(shí)際各線路分配車輛情況。處理過程條目處理過程名稱:駕駛員車輛組合編號:P.04輸入數(shù)據(jù):實(shí)際各線路分配駕駛員情況,實(shí)際各線路分
15、配車輛情況輸出數(shù)據(jù):排班表處理邏輯:根據(jù)實(shí)際各線路分配駕駛員情況以及實(shí)際各線路分配車輛情況可以整合出排班表五、數(shù)據(jù)存儲 數(shù)據(jù)存儲是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方,也是數(shù)據(jù)流的來源和去向之一數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱:各線路分配駕駛員信息編號:S1組成:DI_8 , DI_14 , DI_22 相關(guān)處理:P.01 P.03數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱:各線路分配車輛信息編號:S2組成:DI_6 , DI_8 , DI_11 , DI_14 , DI_20 , DI_21相關(guān)處理:P.05 P.07數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱:各線路班次時(shí)間編號:S3組成:DI_5 , DI_12 , DI_16 , DI_17
16、相關(guān)處理:P.01 P.05 數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱: 駕駛員休假情況編號:S4組成:DI_2 , DI_3 , DI_4相關(guān)處理:P.01 P.03數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱:車輛維修情況編號:S5組成:DI_18 , DI_19 , DI_23相關(guān)處理:P.05 P.07數(shù)據(jù)存儲條目數(shù)據(jù)存儲名稱:排班表編號:S6組成:DI_14 DI_8相關(guān)處理:將排班表輸出給查詢者1.3.2 系統(tǒng)功能模塊圖缺少!2數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì) 包括概念設(shè)計(jì)和邏輯設(shè)計(jì)兩個(gè)部分。2.1 概念設(shè)計(jì)概念設(shè)計(jì)目標(biāo):是產(chǎn)生反映企業(yè)組織信息需求的數(shù)據(jù)庫概念結(jié)構(gòu)。 概念模式是獨(dú)立于數(shù)據(jù)庫邏輯結(jié)構(gòu), 獨(dú)立于支持?jǐn)?shù)據(jù)庫的DBMS,不依賴
17、于計(jì)算機(jī)系統(tǒng)的。概念設(shè)計(jì)的方法:(1)選擇中層數(shù)據(jù)流為切入點(diǎn),通常選擇實(shí)際系統(tǒng)中的子系統(tǒng);(2)設(shè)計(jì)分E-R圖,即各子模塊的E-R圖;(3)生成初步E-R圖,通過合并方法,做到各子系統(tǒng)實(shí)體、屬性、聯(lián)系統(tǒng)一;(4)生成全局E-R圖,通過消除沖突等方面。分E-R圖建立,詳見圖2-12.2 邏輯設(shè)計(jì)1、邏輯設(shè)計(jì)階段目標(biāo)是與選用的DBMS所支持?jǐn)?shù)據(jù)模型相符的邏輯結(jié)構(gòu)。2、設(shè)計(jì)邏輯結(jié)構(gòu)一般分為三步:(1)將概念結(jié)構(gòu)轉(zhuǎn)換為一般的關(guān)系、網(wǎng)狀、層次模型;(2)將轉(zhuǎn)換來的關(guān)系、網(wǎng)狀、層次模型像特定DBMS所支持?jǐn)?shù)據(jù)模型轉(zhuǎn)換;(3)對數(shù)據(jù)模型優(yōu)化。2.2.1 建立關(guān)系模式2.2.1.1在將概念模型轉(zhuǎn)換為邏輯模型過
18、程中依據(jù)的主要準(zhǔn)則: (1)一個(gè)1:1的聯(lián)系與任意一端對應(yīng)的關(guān)系模式合并,在該關(guān)系模式中加入另一端關(guān)系的碼和聯(lián)系本身的屬性;(2)一個(gè)1:n的關(guān)系與n端對應(yīng)的關(guān)系模式合并,在n端關(guān)系模式中加入1端關(guān)系的碼和聯(lián)系本身的屬性,合并后關(guān)系的碼為n端關(guān)系的碼;、(3)一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的碼轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系碼的一部分。圖2-1 分E-R圖2.2.2關(guān)系及函數(shù)依賴: 1.線路(線路編號,線路名稱) F:線路編號線路名稱 2.線路運(yùn)行班次時(shí)間表(班次序號,線路編號,發(fā)車時(shí)間) F:(班次序號,線路編號)發(fā)車時(shí)間 3.站點(diǎn)(站點(diǎn)
19、編號,站點(diǎn)名稱) F:站點(diǎn)編號站點(diǎn)名稱 4.職工(職工編號,線路編號,姓名,所屬部門,職位) F: 職工編號姓名、職工編號線路編號職工編號所屬部門、 職工編號職位 5排班情況(序號_排班情況,車輛自編號,線路編號,班次序號,職工編號,排班日期) F: 序號_排班情況車輛自編號序號_排班情況線路編號序號_排班情況班次序號序號_排班情況職工編號序號_排班情況排班日期 6.車輛信息(車輛自編號,線路編號) F:車輛自編號線路編號7.線路_站點(diǎn)(線路編號,站點(diǎn)編號,與上一站間隔) F:(線路編號,站點(diǎn)編號)與上一站間隔 2.2.3 關(guān)系模式規(guī)范化處理分析各關(guān)系模式是否存在操作異常現(xiàn)象,如果采用范式理論
20、將其規(guī)范,使其滿足3范式。經(jīng)分析此模式所有關(guān)系每一個(gè)非主屬性完全函數(shù)依賴于主碼,也不存在傳遞函數(shù)依賴。故其滿足3NF。2.2.4 用戶子模式建立為方便相關(guān)人員查詢排班數(shù)據(jù),創(chuàng)建如下子模式:Select arrange info(排班時(shí)間,線路名稱,班次序號,發(fā)車時(shí)間,員工姓名,車輛自編號)。2.2.5 關(guān)系模式邏輯結(jié)構(gòu)定義2.2.5.1 關(guān)系模式匯總,見表2-2表2-2 關(guān)系模式匯總表編號關(guān)系名稱模式說明T-1Route(詳見附錄1-1)(詳見附錄1-1)T-2routeTime(詳見附錄1-2)(詳見附錄1-2)T-3station(詳見附錄1-3)(詳見附錄1-3)T-4Employees
21、(詳見附錄1-4)(詳見附錄1-4)T-5Arrange(詳見附錄1-5)(詳見附錄1-5)T-6Car_info(詳見附錄1-6)(詳見附錄1-6)T-7Route_station(詳見附錄1-7)(詳見附錄1-7)T-8routeCar(詳見附錄1-8)(詳見附錄1-8)T-9routeDriver(詳見附錄1-9)(詳見附錄1-9)2.2.5.2外模式匯總,見表2-2表2-2 外模式匯總表序號視圖名稱作用備注1Select arrange info排班信息3數(shù)據(jù)庫物理設(shè)計(jì)3.1索引的設(shè)計(jì) 1.需要查詢排班時(shí)間,故在arrange表上建立索引arrangeTime_FK 2.需要查詢排班車
22、輛信息,故在arrange表上建立索引CarInfo_arrange_FK 3.需要查詢排班司機(jī)信息,故在arrange表上建立索引driver_arrange_FK 4.需要查詢線路信息,故在其上建立索引route_arrange_FK 5.需要查詢和路線對應(yīng)的車輛信息,故在car_info表上建立索引routeCar_FK 6.需要查詢和路線安排的司機(jī)信息,故在Employees表上建立索引routeDriver_Fk 7.需要查詢線路名稱,故在route表上建立唯一性索引routeName_UQ8 需要查詢線路和站點(diǎn)關(guān)系,故在route_station表上建立索引route_statio
23、n_FK和route_station2_FK分別表示route_id和station_id9.需要查詢線路的班次,故在routeTime表上建立索引route_order_FK10.需要查詢線路的名稱,故在station表上建立唯一性索引stationName_UQ3.2存儲過程的設(shè)計(jì) 設(shè)計(jì)了兩個(gè)存儲過程:DecreaseRouteTime InceraseRouteTime3.3觸發(fā)器的設(shè)計(jì) 設(shè)計(jì)了兩個(gè)觸發(fā)器 insert_routeTime update_routeTime3.4視圖的設(shè)計(jì) 設(shè)計(jì)了一個(gè)視圖: 排班信息4數(shù)據(jù)庫實(shí)施與測試數(shù)據(jù)庫實(shí)施與測試包括數(shù)據(jù)庫實(shí)施和測試兩個(gè)部分。4.1 數(shù)
24、據(jù)庫實(shí)施4.1.1 數(shù)據(jù)庫及數(shù)據(jù)庫對象建立 SQL server中數(shù)據(jù)庫及數(shù)據(jù)庫對象建立,見表4-1表4-1:數(shù)據(jù)庫及數(shù)據(jù)庫對象建立表序號名稱定義語句2-1數(shù)據(jù)庫(詳見附錄2-1)2-2基本表(詳見附錄2-2)2-3視圖(詳見附錄2-3)2-4觸發(fā)器(詳見附錄2-4)2-5存儲過程(詳見附錄2-5)4.1.2 數(shù)據(jù)入庫對所有數(shù)據(jù)表錄入20條以上的記錄,可使用批量導(dǎo)入,逐條錄入,或整體復(fù)制的方法。4.2 數(shù)據(jù)庫測試4.2.1 視圖 見圖4-2圖4-2視圖4.2.2存儲過程測試1. 提前發(fā)班時(shí)間測試代碼:USE test1GODECLAREreturn_value intEXECreturn_va
25、lue = dbo.DecreaseRouteTimeDecreaseTime = 10SELECTReturn Value = return_valueGO執(zhí)行結(jié)果:見圖4-3所有車輛班次發(fā)班時(shí)間提前10分鐘圖4-32. 推遲發(fā)班時(shí)間測試代碼:USE test1GODECLAREreturn_value intEXECreturn_value = dbo.IncreaseRouteTimeIncreaseTime = 10SELECTReturn Value = return_valueGO執(zhí)行結(jié)果:見圖4-4所有車輛發(fā)班時(shí)間推遲10分鐘圖4-43. 線路班次運(yùn)行時(shí)間表插入數(shù)據(jù)測試代碼:US
26、E test1GODECLAREreturn_value intEXECreturn_value = dbo.InsterDate_routeTimerouteID = N001,orderNum = 4,leaveTime = N10:00:00SELECTReturn Value = return_valueGO執(zhí)行結(jié)果:見圖4-5routeTime表新增一條數(shù)據(jù),且之前比序號4大的班次序號加1圖4-54.2.3觸發(fā)器測試1.檢查插入時(shí)數(shù)據(jù)的合法性 測試代碼:use test1goinsert into routeTime(route_id,order_num,leave_time) va
27、lues(001,2,2015-06-24 06:10:00.000)測試結(jié)果:見圖4-6圖4-62.檢查更新時(shí)數(shù)據(jù)的合法性測試代碼:use test1goupdate routeTime set leave_time=2015-06-24 05:00:00.000where order_num =2 and route_id=001go結(jié)果見圖4-7 圖4-75總結(jié) 做了好多天,終于完善了數(shù)據(jù)庫。只想說一句好累啊。不過還是痛并快樂著。因?yàn)槲覀儚淖鲞@個(gè)任務(wù)前的不知所措,經(jīng)過這段時(shí)間來的學(xué)習(xí),學(xué)到了很多東西。我們建立了6張基本表,兩個(gè)觸發(fā)器,兩個(gè)存儲過程,一個(gè)視圖。通過本次將課堂所學(xué)的理論知識應(yīng)
28、用與實(shí)踐,為以后的設(shè)計(jì)提供了有力的支持,也打下良好的基礎(chǔ)附錄1 關(guān)系模式說明1-1線路關(guān)系模式說明 線路(線路編號,線路名稱)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Route_idVarchar(10)是NOT NULLRoute_nameVarchar(30)NOT NULL1-2線路運(yùn)行班次時(shí)間表關(guān)系模式說明線路班次時(shí)間表(班次序號,發(fā)車時(shí)間,線路編號)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Order_numInt是NOT NULLLeave_timedatetimeRoute_idVarchar(10)是是NOT NULL1-3站點(diǎn)關(guān)系模式說明站點(diǎn)(站點(diǎn)編
29、號,站點(diǎn)名稱)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Station_idVarchar(10)是NOT NULLStation_nameVarchar(30)1-4職工關(guān)系模式說明職工(職工編號,姓名,所屬部門,職位,線路編號)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Employees_idVarchar(10)是NOT NULLEmployees_nameVarchar(20)Employees_departmentVarchar(50)Employees_titleVarchar(50)Route_idVarchar(10)是NOT NULL1-5排班情況關(guān)系
30、模式說明線路運(yùn)行班次時(shí)間表(線路編號,班次序號,發(fā)車時(shí)間)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Route_idVarchar(10)是是NOT NULLOrder_numInt是NOT NULLLeave_yimedatetime1-6車輛信息關(guān)系模式說明車輛信息(車輛自編號,線路編號)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Car_idVarchar(10)是NOT NULLRoute_idVarchar(10)是 1-7 線路_站點(diǎn)關(guān)系模式說明線路_站點(diǎn)(線路編號,站點(diǎn)編號,與上一站間隔)屬性名數(shù)據(jù)類型取值范圍是否為主屬性是否為外鍵完整性要求Car_idVa
31、rchar(10)r是是NOT NULLStation_idVarchar(10)是是NOT NULLintervalfloat附錄2 SQl數(shù)據(jù)定義語句2-1創(chuàng)建數(shù)據(jù)庫CREATE DATABASE KYYY_MIS;2-2基本表的定義/* 排班表*/create table arrange ( arrangeNum int identity, car_id varchar(10) not null, route_id varchar(10) null, order_num int null, Employees_id varchar(10) not null, arrangedate da
32、tetime null, constraint PK_ARRANGE primary key nonclustered (arrangeNum)Go/*職工表*/create table Employees ( Employees_id varchar(10) not null, route_id varchar(10) not null, Employees_name varchar(20) null, Employees_department varchar(50) null, Employees_title varchar(50) null, constraint PK_EMPLOYEE
33、S primary key nonclustered (Employees_id)Go/*車輛信息表*/create table car_info ( car_id varchar(10) not null, route_id varchar(10) null, license_number varchar(15) null, constraint PK_CAR_INFO primary key nonclustered (car_id)Go/*線路表*/create table route ( route_id varchar(10) not null, route_name varchar
34、(30) null, constraint PK_ROUTE primary key nonclustered (route_id)Go/*線路運(yùn)行班次時(shí)間表*/create table routeTime ( route_id varchar(10) not null, order_num int not null, leave_time datetime null, constraint PK_ROUTETIME primary key nonclustered (route_id, order_num)Go/*線路站點(diǎn)表*/create table route_station ( rou
35、te_id varchar(10) not null, station_id varchar(10) not null, interval float null, constraint PK_ROUTE_STATION primary key (route_id, station_id)Go/*站點(diǎn)表*/create table station ( station_id varchar(10) not null, station_name varchar(30) null, constraint PK_STATION primary key nonclustered (station_id)G
36、o/*休假時(shí)間表*/create table vacation ( vacation_id varchar(10) null, vacation_StartDate datetime null, vacation_EndDate datetime null)Go2-3視圖的定義/*查看排班信息*/USE test1GOCREATE VIEW 排班信息ASSELECT a.arrangedate,r.route_name,rt.order_num,rt.leave_time,e.Employees_name,ci.license_numberFROM Employees e,car_info c
37、i,route r,routeTime rt,arrange aWHERE e.Employees_id=a.Employees_id and ci.car_id=a.car_id and r.route_id =rt.route_id and rt.route_id=a.route_id and rt.order_num = a.order_numGO2-4存儲過程定義/*推遲發(fā)車時(shí)間*/CREATE PROCEDURE IncreaseRouteTimeIncreaseTime int,ASBEGINupdate routeTime set leave_time = DATEADD(HH,
38、IncreaseTime,leave_time)ENDGO/*提前發(fā)車時(shí)間*/USE test1GOCREATE PROCEDURE dbo.DecreaseRouteTimeDecreaseTime intASBEGINSET DecreaseTime = 0 - DecreaseTimeupdate routeTime set leave_time = DATEADD(mi,DecreaseTime,leave_time)ENDGO/*routeTime表插入數(shù)據(jù)*/USE test1GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE
39、 PROCEDURE dbo.InsterDate_routeTimerouteID varchar(10),orderNum int,leaveTime datetimeASBEGINDECLARE orderNum1 int-判斷同線路是否已存在該班次序號select orderNum1=order_num FROM routeTime WHERE order_num=orderNum AND route_id=routeIDIF orderNum1 IS NOT NULLBEGINUPDATE routeTime SET order_num = order_num + 1 WHERE o
40、rder_num (orderNum-1) AND route_id=routeIDENDINSERT INTO routeTime (route_id,order_num,leave_time) VALUES (routeID,orderNum,leaveTime)ENDGO2-5觸發(fā)器定義/*插入班次*/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO- =- Author:- Create date: - Description:- =CREATE TRIGGER inster_routeTime ON routeTime INSTEAD OF
41、INSERTAS DECLARE orderNum intDECLARE orderNum1 intDECLARE routeID varchar(10)DECLARE leaveTime0 datetimeDECLARE leaveTime1 datetimeDECLARE leaveTime2 datetime-獲取插入線路編號及班次序號select leaveTime0=leave_time,orderNum = order_num,routeID = route_id FROM inserted-判斷同線路是否已存在該班次序號select orderNum1=order_num FRO
42、M routeTime WHERE order_num=orderNum AND route_id=routeIDIF orderNum1 IS NOT NULLBEGIN-PRINT 該線路已經(jīng)存在該班次序號 -提示錯(cuò)誤信息raiserror(該線路已經(jīng)存在該班次序號,16,1)print orderNum print routeID-ROLLBACK TRANSACTION -回滾ENDELSEBEGIN select leaveTime1=leave_time FROM routeTime WHERE order_num= orderNum-1 AND route_id=routeID select leaveTime2=leave_time FROM routeTime WHERE order_num= orderNum+1 AND route_id=routeID IF leaveTime1 IS NULLBEGINset leaveTime1 = leaveTime0END IF leaveTime2 IS NULLBEGINset leaveTime2 = leaveTime0END IF leaveTime0 leaveTime2BEGINraiserror(發(fā)車時(shí)間輸入有誤,比上一序號時(shí)間小或比下一序號發(fā)車時(shí)間大,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)檢索指南課件
- 《GBT12406-2022表示貨幣的代碼》(2025版)深度解析
- 《同位語從句講解與練習(xí)》課件
- 醫(yī)療用具美術(shù)課件
- 知識點(diǎn)總結(jié)二級消防工程師試題及答案
- 醫(yī)院感控知識培訓(xùn)
- 車膜產(chǎn)品與施工技術(shù)培訓(xùn)大綱
- 幼兒園安全剪刀使用教育指南
- 敘事醫(yī)學(xué)故事匯報(bào)
- 供應(yīng)商開發(fā)管理流程
- 醫(yī)院培訓(xùn)課件:《走進(jìn)康復(fù)》
- 2025屆貴州省遵義第四中學(xué)高考全國統(tǒng)考預(yù)測密卷英語試卷含解析
- 2025年北京市豐臺區(qū)九年級初三一模物理試卷(含答案)
- 中醫(yī)內(nèi)科學(xué)胸痹課件
- 2025廣西廣投臨港工業(yè)有限公司社會(huì)招聘45人筆試參考題庫附帶答案詳解
- 銅川易源電力實(shí)業(yè)有限責(zé)任公司招聘筆試真題2024
- 2024年北京高考化學(xué)試卷知識點(diǎn)分布
- 2025-2030中國橋塞行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 小超市加股東合同協(xié)議
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試數(shù)學(xué)試卷及答案(武漢四調(diào))
- 2025年四川省自然資源投資集團(tuán)有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論