實例2教室管理系統(tǒng)數(shù)據庫設計課案_第1頁
實例2教室管理系統(tǒng)數(shù)據庫設計課案_第2頁
實例2教室管理系統(tǒng)數(shù)據庫設計課案_第3頁
實例2教室管理系統(tǒng)數(shù)據庫設計課案_第4頁
實例2教室管理系統(tǒng)數(shù)據庫設計課案_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實例2:教室管理系統(tǒng)數(shù)據庫設計1數(shù)據庫設計1.1 需求設計1.1.1引言在大學里,教室仍然是教學的主要場所,也是學生學習的重要場所,所以教室環(huán)境和設備直接影響到教學活動的開展和學生的學習。為了保證教室環(huán)境良好的運轉,教室的管理也就顯得十分的必要和重要。但是教室的管理也并不是一件很容易的事情。教室設備(尤其是多媒體設備)有所損壞必須及時登記,修復,否則很可能影響以后教學,造成教學事故。教室的使用具有一定的計劃性和流動性,即一個班在相應的時間里,所上的課程和使用的教室是固定的,但是不同的課程在不同的時間里會使用不同的教室,這與教務處的課程安排是密切相關的。尤其是使用多媒體教室的時候,這就顯得比較麻

2、煩。為了能夠更系統(tǒng)的,更有序的,更合理的,更有效的進行教室管理,有必要利用計算機來處理各種信息,這也就需要一個更有效的教室管理系統(tǒng)。為此,經過較詳細的調查和慎重的思考,我決定做一個教室管理系統(tǒng),來解決這些問題,使管理簡化,方便而且更有效。1.1.2 目標與任務(1)目標充分了解用戶的需求,了解工作的流程,以及可能出現(xiàn)的問題。(2)任務處理對象:本系統(tǒng)總體上說涉及了三個方面的數(shù)據,職工的信息,教室的信息,課程的信息,其中職工信息包括了員工信息和清潔工信息。此外還有值班安排信息,多媒體設備損壞紀錄,常規(guī)設備損壞紀錄。處理功能要求:教室管理系統(tǒng)的具體功能包括三個方面:教室查詢子系統(tǒng),衛(wèi)生管理子系統(tǒng),

3、設備管理子系統(tǒng)。教室查詢子系統(tǒng)主要完成空閑教室查詢(無課教室),教室使用查詢的功能;衛(wèi)生管理子系統(tǒng)主要完成值班安排與修改功能和值班情況記錄的功能;設備管理子系統(tǒng)比較麻煩,主要是接收損壞信息,通過檢查其有效性,把有效的損壞信息分類并且記錄,然后通知維修工,再紀錄維修情況的功能。(3)安全性和完整性要求在這個系統(tǒng)中涉及到了相關人員的問題,而且同一個職工可能在不同的表中存在,要考慮到,如果辭退或者某職工辭職,那么不僅要在職工信息表中刪除相應的信息,還要在其他的相關表中刪除信息,這就涉及到了安全性的問題,初步打算用一個觸發(fā)器來解決這個問題。完整性也是一個重要的內容,它也涉及安全性上的問題。1.1.3階

4、段結果(1)用戶調查本系統(tǒng)的用戶范圍比較廣,教室查詢子系統(tǒng)主要針對學生,通過聽取周圍學生的看法和意見,以及自身的體會,比較充分的了解了學生的需求;衛(wèi)生管理子系統(tǒng)主要針對教室管理的員工及其主任,我直接詢問了相關的員工,通過對他們的詢問,了解了他們的工作的基本流程,及其需求;設備管理子系統(tǒng)主要針對,教室管理的員工和維修工,通過對員工的咨詢,了解了他們管理的工作流程和具體的需求。(2)數(shù)據流程圖下面是一個設備流程圖的底層流程圖:其它的詳見附錄1(3)數(shù)據字典數(shù)據項:表1 教室信息數(shù)據項數(shù)據項名數(shù)據項含義說明數(shù)據類型長度取值范圍取值含義于其他數(shù)據項的邏輯關系數(shù)據項之間的聯(lián)系Spart校區(qū)char10R

5、name教室名稱char10Position所在位置char20Type教室類型char10Room容量int4數(shù)據項名數(shù)據項含義說明數(shù)據類型長度取值范圍取值含義于其他數(shù)據項的邏輯關系數(shù)據項之間的聯(lián)系Cno課程號char10Cname課程名稱char20Ctime課程學時int4Weed周次char10Day星期char10Node節(jié)次char20Rname教室名稱char10Mno系號char10Mname系名char20cg班級char20Number人數(shù)int4表2 課程信息數(shù)據項表3 職工信息數(shù)據項數(shù)據項名數(shù)據項含義說明數(shù)據類型長度取值范圍取值含義于其他數(shù)據項的邏輯關系數(shù)據項之間的聯(lián)系

6、Pno職工編號char10等于維修工編號Pname姓名char20等于維修工姓名Sex性別char4Age年齡int4Jname職業(yè)名稱char10Addr住址char40Tel聯(lián)系電話char20Week周次char10Day星期char10Ontime上班時間char20Uptime下班時間char20表4 損壞信息數(shù)據項數(shù)據項名數(shù)據項含義說明數(shù)據類型長度取值范圍取值含義于其他數(shù)據項的邏輯關系數(shù)據項之間的聯(lián)系Rname教室名稱char10Dlevel損壞程度char10Mend修復難易char10Mno維修工編號char10等于維修工編號Mname維修工姓名char10等于維修工姓名Rep

7、air是否修復char101.14 數(shù)據結構表數(shù)據結構表數(shù)據結構名含義說明組成Class(T1)教室信息校區(qū)名,教室名稱,所在位置,教室類型,容量Course(T2)課程信息課程號,課程名稱,周次,星期,節(jié)次,課程學時,教室名稱,系號,系名,班級,人數(shù)Worker(D1)職工信息職工編號,姓名,職業(yè)名稱,性別,年齡,住址,聯(lián)系電話Duty(D2)值班職工編號,姓名,職業(yè)名稱,星期,上班時間,下班時間State(D3)值班情況記錄職工編號,姓名,職業(yè)名稱,星期,周次Media(P1)多媒體設備損壞記錄教室名稱,損壞程度,修復難易,維修工編號,維修工姓名,是否修復Routine(P2)常規(guī)設備損壞

8、記錄教室名稱,損壞程度,維修工編號,維修工姓名,是否修復1.1.5 處理邏輯描述(1)教室查詢子系統(tǒng)輸入:查詢條件輸出:查詢結果處理:按照條件,在相應的表中,查找相應的數(shù)據,然后輸出(1)衛(wèi)生管理子系統(tǒng)輸入:查詢、插入或修改的目標結果:輸出查詢的結果,或者插入成功,或者修改成功處理:在相應的表中完成相應的操作。(3)設備管理子系統(tǒng)輸入:插入或修改或查詢的條件或目標結果:輸出查詢結果或插入成功或修改成功處理:在相關表中完成相關的操作。1.2 概念設計1.2.1 引言概念結構的實際是整個數(shù)據庫設計的關鍵,這個階段主要的目標是通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于DBMS的概念模型(E-

9、R圖)。它的主要特點是:1.能真實、充分地反映現(xiàn)實世界,包括事物與事物之間的聯(lián)系,能滿足用戶對數(shù)據的處理要求,是對現(xiàn)實世界的一個真實模型;2.易于理解,因此可以用它和不熟悉計算機的用戶交換意見;3.易于更改,當應用環(huán)境和應用要求改變時,容易對概念模型修改和擴充;4.易于向關系、網狀、層次等各種數(shù)據模型轉換。1.2.2 概念模型設計(1)設計E-R圖詳見附錄21.2.3實體的屬性、聯(lián)系的屬性主碼表示如:教室名稱;外碼表示如:教室名稱;普通屬性如:教室名稱。教室(校區(qū)名,教室名稱,所在位置,教室類型,容量);課程(課程號,教室名稱,課程名稱,周次,星期,節(jié)次,課程學時,系名,班級,人數(shù));職工(職

10、工編號,姓名,職業(yè)名稱,性別,年齡,住址,聯(lián)系電話);多媒體設備損壞(教室名稱,維修工編號,損壞程度,修復難易,維修工姓名,是否修復,備注);常規(guī)設備損壞(教室名稱,維修工編號,損壞程度,維修工姓名,是否修復,備注);值班信息(職工編號,姓名,職業(yè)名稱,星期,上班時間,下班時間);值班記錄(職工編號,姓名,職業(yè)名稱,星期,周次);1.3 邏輯設計1.3.1 引言這個階段的任務就是把概念結構設計階段設計好的基本E-R圖轉換為與DBMS所支持的數(shù)據模型相符合的邏輯結構。在這個階段里,該系統(tǒng)的目標就是把基本的E-R圖轉換成關系數(shù)據模型。1.3.2 數(shù)據組織(1)將E-R圖轉換成關系模型:E-R圖轉換

11、成關系模型應該遵循以下原則:1. 一個實體型轉換為一個關系模式。2. 一個1:1聯(lián)系可以轉換為一個獨立的關系模式,也可以與任意一端對應的關系模式合并。3. 把一個1:n聯(lián)系轉換為一個獨立的關系模式。4. 一個m:n聯(lián)系轉換為一個關系模式。5. 三個或三個以上實體間的一個多元聯(lián)系可以轉換為一個關系模式。6. 具有相同碼的關系模式可合并。(2)轉換的結果:主碼表示如:教室名稱;外碼表示如:教室名稱;普通屬性如:教室名稱。教室(校區(qū)名,教室名稱,所在位置,教室類型,容量);課程(課程號,教室名稱,課程名稱,教師編號,周次,星期,節(jié)次,課程學時,系名,班級,人數(shù));職工(職工編號,姓名,職業(yè)名稱,性別

12、,年齡,住址,聯(lián)系電話);多媒體設備損壞(教室名稱,維修工編號,損壞程度,修復難易,維修工姓名,是否修復,備注);常規(guī)設備損壞(教室名稱,維修工編號,損壞程度,維修工姓名,是否修復,備注);值班信息(職工編號,姓名,職業(yè)名稱,星期,上班時間,下班時間);值班記錄(職工編號,姓名,職業(yè)名稱,星期,周次); 該模式沒有插入異常,刪除異常等操作異常現(xiàn)象,已經達到3NF。(3)設計用戶子模式:鑒于安全問題,每一個表都應有相應的視圖。建立相關的視圖如下:教室視圖:Class1(校區(qū),教室名稱,地點,教室類型,容量);課程與教室視圖:Course1(校區(qū),教室名稱,教室類型,課程名稱,周次,星期,節(jié)次,容

13、量);這兩個視圖包含了允許學生和員工等用戶查詢的屬性,不允許修改,插入和刪除。為職工做視圖:值日視圖:Duty1(職工編號,職工姓名,職業(yè)名稱,上班時間,下班時間);清潔工值班記錄:State1(職工編號,職工姓名,職業(yè)名稱,日期,情況);員工值班記錄:State2(職工編號,職工姓名,職業(yè)名稱,日期,情況);職工視圖:State3(職工編號,職工姓名,職業(yè)名稱,日期,情況);常規(guī)設備損壞紀錄:Routine1(教室名稱,職工編號,職工姓名,描述,是否修復,日期,備注);多媒體設備損壞:Media1(教室名稱,職工編號,職工姓名,描述,修復難易,是否修復,日期,備注);職工信息:Worker1

14、(職工編號,姓名,職業(yè)名稱,性別,年齡,住址,聯(lián)系電話);在這些視圖中,值日視圖允許各個職工查詢,但只允許管理員(主任)進行修改,插入,刪除等操作;清潔工值班記錄視圖,除維修工外,其他各職工都可查詢,員工還可進行修改操作,管理員(主任)可進行各種操作;員工值班記錄只允許員工查詢;常規(guī)設備損壞紀錄視圖允許員工和維修工進行查詢,員工只對視圖中的教室名稱屬性有修改,插入的權限,維修工對其他屬性有修改權限;在多媒體設備損壞信息視圖中,允許員工和多媒體維修工進行查詢,員工只對教室名稱有修改和插入的權限,多媒體維修工對其他的屬性有修改權限。為方便,其中的部分權限在制作過程中要直接賦給基本表。1.3.3數(shù)據

15、處理見系統(tǒng)的功能模塊圖:1.4 物理設計1.4.1 引言數(shù)據庫在物理設備上的存儲與存取方法稱為數(shù)據庫的物理結構,它依賴于給定的計算機系統(tǒng)。為一個給定的邏輯數(shù)據模型選取一個最適合應用要求的物理結構的過程,就是數(shù)據庫的物理設計。1.4.2目標與任務對數(shù)據庫進行合理的物理設計,以提高其時間和空間效率。(1)數(shù)據存取方面確定數(shù)據庫的物理結構,在關系數(shù)據庫中主要指存取方法和存儲結構;對物理結構進行評價,評價的重點是時間和空間效率。如果評價結果滿足原設計的要求,則可以進入到物理實施階段,否則就需要重新設計或修改物理結構,有時甚至要返回邏輯設計階段修改數(shù)據模型。(2)功能模塊見圖15所示1.5 數(shù)據庫實施1

16、.5.1 建立基本表/*建立教室信息表*/create table Class(Spartchar(10),Rname char(10)not null unique,Position char(20),Type char(10),Room int,primary key(Rname)/*建立課程信息表*/create table Course(Cno char(10),Cname char(20),Rname char(10),Cweek char(10),Cday char(10),Node char(10),Ctime int,Grade char(10),Room int,Number

17、 int,Sdept char(20)/*建立職工信息表*/create table Worker(Wnochar(10)not null unique,Wnamechar(20),Wsexchar(4),Wageint,Jnamechar(10),Addrchar(40),Telchar(20),primary key(Wno),check(Wage >= 18 and Wage <= 60)/*建立值班信息表*/create table Duty(Wnochar(10),Wnamechar(20),Jnamechar(10),Ontimechar(20),Uptimechar(

18、20),primarykey(Wno),foreignkey(Wno)referencesWorker(Wno),)/*建立值班情況記錄表*/create table State(Wnochar(10),Wnamechar(20),Jnamechar(10),Wdatechar(20),statechar(20)/*建立多媒體設備損壞記錄表*/ create table Media(Rnamechar(10),Wnochar(10),Wnamechar(20),Describechar(20),Dlevelchar(10),Repairchar(4),Mdatechar(20),Pmarkch

19、ar(50)/*建立常規(guī)設備損壞記錄表*/create table Routine(Rnamechar(10),Wnochar(10),Wnamechar(20),Describechar(20),Repairchar(4),Mdatechar(20),Pmarkchar(50)1.5.2 建立視圖/*教室信息視圖 */create view Class1(校區(qū),教室名稱,地點,教室類型,容量)asselect *from Class/*課程信息視圖 */create view Course1(校區(qū),教室名稱,教室類型,課程名稱,周次,星期,節(jié)次,容量)asselectClass.Spart,

20、Class.Rname,Type,Cname,Cweek,Cday,Node,Class.RoomfromClass,CourseWhereClass.Rname = Course.Rname/*職工信息視圖*/create view Worker1(職工編號,姓名,職業(yè)名稱,性別,年齡,住址,聯(lián)系電話)asselect *fromWorker/*值班信息視圖*/create view Duty1(職工編號,職工姓名,職業(yè)名稱,上班時間,下班時間)asselect *from Duty/*清潔工值班情況記錄視圖*/create view State1(職工編號,職工姓名,職業(yè)名稱,日期,情況)

21、asselect *from Statewhere Jname = '清潔工'/*除清潔工外其他職工值班情況視圖*/create view State2(職工編號,職工姓名,職業(yè)名稱,日期,情況)asselect *from Statewhere Jname != '清潔工'/*總的職工值班情況視圖 */create view State3(職工編號,職工姓名,職業(yè)名稱,日期,情況)asselect *from State/*常規(guī)設備損壞視圖*/create view Routine1(教室名稱,職工編號,職工姓名,描述,是否修復,日期,備注)asselect

22、*from Routine/*多媒體設備損壞視圖*/create view Media1(教室名稱,職工編號,職工姓名,描述,修復難易,是否修復,日期,備注)asselect *from Media2.5.3 查詢與更新/*員工課程查詢*/create Procedure js_kc1C_Spartchar(10),C_Cweekchar(6),C_Cday char(4),C_Nodechar(5)asselect校區(qū),教室名稱,課程名稱,教室類型,容量fromCourse1where校區(qū) = C_Spart and 周次 = C_Cweek and 星期 = C_Cday and 節(jié)次 =

23、 C_Node and 教室類型 = '多媒體教室'order by 教室名稱 ASC /*學生課程查詢*/create procedure js_kc2C_Spartchar(10),C_Cweekchar(6),C_Cday char(4),C_Nodechar(5)asselect校區(qū),教室名稱,課程名稱,教室類型,容量from Course1where校區(qū) = C_Spart and 周次 = C_Cweek and 星期 = C_Cday and 節(jié)次 = C_Nodeorder by 教室名稱 ASC /*空教室查詢*/create procedure js_kjs

24、1C_Spartchar(10),C_Cweekchar(6),C_Cday char(4),C_Nodechar(5)asselect 校區(qū),教室名稱,教室類型,容量fromClass1where not exists(select *fromCourse1where校區(qū) = C_Spart and 周次 = C_Cweek and 星期 = C_Cday and 節(jié)次 = C_Node and 教室名稱 = Class1.教室名稱)/*職工值班查詢*/create procedure js_zb1S_Wnochar(10)asselect職工編號,職工姓名,職業(yè)名稱,上班時間,下班時間fr

25、omDuty1where職工編號 = S_Wno/*職工值班記錄查詢*/create procedure js_zbjl1S_Wnochar(10)asselect職工編號,職工姓名,職業(yè)名稱,日期,情況fromState3where職工編號 = S_Wno/*員工對清潔工值班記錄的插入(視圖)*/create procedure js_zlc1S_Wnochar(10),S_Wnamechar(20),S_Jnamechar(10),S_Wdatechar(20),S_statechar(20)asinsert intoState1values(S_Wno,S_Wname,S_Jname,S

26、_Wdate,S_state)/*員工對清潔工值班記錄的刪除(視圖)*/create procedure js_zls1S_Wnochar(10)asdeletefromState1where職工編號 = S_Wno/*主任除清潔工外的其他職工值班記錄的插入(視圖)*/create procedure js_zlc2S_Wnochar(10),S_Wnamechar(20),S_Jnamechar(10),S_Wdatechar(20),S_statechar(20)asinsert intoState2values(S_Wno,S_Wname,S_Jname,S_Wdate,S_state)

27、 /*主任除清潔工外的其他職工值班記錄的刪除(視圖)*/create procedure js_zls2S_Wnochar(10)asdeletefromState2where職工編號 = S_Wno/*主任對職工信息表的插入*/create procedure js_zlc3W_Wnochar(10),W_Wnamechar(20),W_Wsexchar(4),W_Wageint,W_Jnamechar(10),W_Addrchar(40),W_Telchar(20)asinsert intoWorkervalues(W_Wno,W_Wname,W_Wsex,W_Wage,W_Jname,W

28、_Addr,W_Tel) /*用游標完成的主任對職工信息表的修改*/CREATE PROCEDURE js_dmtxg1 W_Wnochar(10),W_Wnamechar(20),W_Wsexchar(4),W_Wageint,W_Jnamechar(10),W_Addrchar(40),W_Telchar(20)ASDECLARE addWorker CURSOR STATIC FOR select * from Worker where Wno=W_Wno and Wname=W_Wname and Wsex=W_Wsexand Wage=W_Wage and Jname=W_Jname

29、 and Addr=W_Addr and Tel=W_TelOPEN addWorkerIF CURSOR_ROWS>0 UPDATE Worker set Wno=W_Wno and Wname=W_Wname and Wsex=W_Wsexand Wage=W_Wage and Jname=W_Jname and Addr=W_Addr and Tel=W_Tel where Wno=W_WnoELSEinsert into Worker(Wno,Wname,Wsex,Wage,Jname,Addr,Tel) values(W_Wno,W_Wname,W_Wsex,W_Wage,W_

30、Jname,W_Addr,W_Tel)CLOSE addWorkerDEALLOCATE addWorker/*主任對職工信息表的刪除*/create procedure js_zls3W_Wnochar(10)asdeletefromWorkerwhereJname = W_Wno/*員工對多媒體設備損壞紀錄的插入*/create procedure js_dmtcr1M_Rnamechar(10),M_Wnochar(10),M_Wnamechar(20),M_Describechar(20),M_Dlevelchar(10),M_Repairchar(4),M_Mdatechar(20)

31、,M_Pmarkchar(50)asinsert into Mediavalues(M_Rname,null,null,null,null,null,null,null)/*多媒體維修工對多媒體損壞紀錄的修改*/CREATE PROCEDURE js_dmtxg1 M_Rnamechar(10),M_Wnochar(10),M_Wnamechar(20),M_Describechar(20),M_Dlevelchar(10),M_Repairchar(4),M_Mdatechar(20),M_Pmarkchar(50)asdeletefromMediawhereRname=M_Rname an

32、d Wno = null insert into Mediavalues(M_Rname,M_Wno,M_Wname,M_Describe,M_Dlevel,M_Repair,M_Mdate,M_Pmark)/*員工對多媒體設備損壞紀錄的插入*/create procedure js_dmtcr2M_Rnamechar(10),M_Wnochar(10),M_Wnamechar(20),M_Describechar(20),M_Repairchar(4),M_Mdatechar(20),M_Pmarkchar(50)asinsert into Routinevalues(M_Rname,nul

33、l,null,null,null,null,null)/*維修工對常規(guī)損壞紀錄的修改*/CREATE PROCEDURE js_dmtxg2 M_Rnamechar(10),M_Wnochar(10),M_Wnamechar(20),M_Describechar(20),M_Repairchar(4),M_Mdatechar(20),M_Pmarkchar(50)asdeletefromRoutinewhereRname=M_Rname and Wno = null insert into Routinevalues(M_Rname,M_Wno,M_Wname,M_Describe,M_Rep

34、air,M_Mdate,M_Pmark)1.5.4建立觸發(fā)器/*建立職工信息表觸發(fā)器*/CREATE TRIGGER js_zg ON dbo.Worker FOR DELETE ASdelete Duty from deleted where Duty.Wno=deleted.Wnodelete State from deletedwhere State.Wno=deleted.Wno2 數(shù)據庫調試與試運行由于內容較多,這里只調試和運行一部分。建立基本表、導入數(shù)據和建立視圖比較簡單,這里就不再顯示,下面調試查詢與更新。2.1查詢/*學生課程查詢*/create procedure js_kc2C_Spartchar(10),C_Cweekchar(6),C_Cday char(4),C_Nodechar(5)asselect校區(qū),教室名稱,課程名稱,教室類型,容量from Course1where校區(qū) = C_Spart and 周次 = C_Cweek and 星期 = C_Cd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論