【文章內(nèi)容簡(jiǎn)介】
表42所示:表42學(xué)生信息表(student)字段名類型說明snovarchar2(20)學(xué)生編號(hào)snamevarchar2(20)姓名ssexnumber性別snationnumber民族sesdvarchar2(12)入學(xué)日期sdeptvarchar2(20)院系scgvarchar2(20)班級(jí)sidnovarchar2(20)身份證號(hào)sphonevarchar2(15)聯(lián)系電話snotevarchar2(200)備注userpwvarchar2(20)登錄密碼varchar2(50)郵箱說明:本表用來存儲(chǔ)學(xué)生的基本信息。主鍵:sno;外鍵:sdept(引用院系信息表的dno字段),scg(引用班級(jí)信息表的cgno字段)。該表中sno、sname、ssex、sesd、sdept、scg和userpw屬性不允許為空值。性別ssex和民族snation字段與前臺(tái)界面的下拉列表相對(duì)應(yīng),其數(shù)值的含義由客戶端進(jìn)行處理,教師信息表的該字段與此相同,不再重復(fù)說明。(3) 教師信息表的設(shè)計(jì)如表43所示:表43 教師信息表(teacher)字段名類型說明tnovarchar2(20)教師編號(hào)tnamevarchar2(20)姓名tsexnumber性別tnationnumber民族tesdvarchar2(12)入職日期tdeptvarchar2(20)院系ttitlevarchar2(50)職稱tidnovarchar2(20)身份證號(hào)tphonevarchar2(15)聯(lián)系電話tnotevarchar2(200)備注userpwvarchar2(20)登錄密碼varchar2(50)郵箱說明:本表用來存儲(chǔ)教師的基本信息。主鍵:tno;外鍵:tdept(引用院系信息表的dno字段)。該表中tno、tname、tsex、tesd、tdept和userpw屬性不允許為空值。(4) 班級(jí)信息表的設(shè)計(jì)如表44所示:表44班級(jí)信息表 (classandgrade)字段名類型說明cgnovarchar2(20)班級(jí)編號(hào)cgamevarchar2(30)班級(jí)名稱cgdeptvarchar2(20)歸屬院系cgheadtvarchar2(20)班主任cgmonitorvarchar2(20)班長(zhǎng)cgnotevarchar2(200)備注說明:本表用來存儲(chǔ)班級(jí)的基本信息。主鍵:cgno;外鍵:cgdept(引用院系信息表的dno字段),cgheadt(引用教師信息表的tno字段),cgmonitor(引用學(xué)生信息表的sno字段)。該表中cgno、cgname和cgdept屬性不允許為空值。(5) 課程信息表的設(shè)計(jì)如表45所示:表45課程信息表(course)字段名類型說明ovarchar2(20)課程編號(hào)amevarchar2(30)課程名ccreditnumber學(xué)分ctypevarchar2(20)課程性質(zhì)cbookvarchar2(20)教材cdeptvarchar2(20)歸屬院系otevarchar2(200)備注說明:本表用來存儲(chǔ)課程的基本信息。主鍵:o;外鍵:cdept(引用院系信息表的dno字段)。該表中o、ame、ccredit、ctype和cdept屬性不允許為空值。該表中學(xué)分ccredit字段上有一個(gè)約束(0=ccredit=100),課程性質(zhì)ctype字段由前臺(tái)客戶端進(jìn)行處理并填入,其值為(“必修”,“限選”,“專業(yè)方向選修”,“學(xué)科領(lǐng)域選修”,“任意跨學(xué)科任選”,“人文跨學(xué)科任選”)中的一個(gè)。(6) 教師授課信息表的設(shè)計(jì)如表46所示:表46教師授課信息表 (tc)字段名類型說明tctnovarchar2(20)教師編號(hào)tcovarchar2(20)課程編號(hào)tcyearvarchar2(12)學(xué)年tctermvarchar2(5)學(xué)期totevarchar2(200)備注說明:本表用來存儲(chǔ)教師授課的相關(guān)信息。主鍵:tctno、tco、tcyear和tcterm;外鍵:tctno(引用教師信息表的tno字段),tco(引用課程信息表的o字段)。該表中tctno、tco、tcyear和tcterm屬性不允許為空值。(7) 學(xué)生選課信息表的設(shè)計(jì)如表47所示:表47 學(xué)生選課信息表 (sc)字段名類型說明scsnovarchar2(20)學(xué)生編號(hào)scovarchar2(20)課程編號(hào)scyearvarchar2(12)學(xué)年sctermvarchar2(5)學(xué)期scscorenumber成績(jī)sotevarchar2(200)備注sctnoVarchar2(20)授課教師說明:本表用來存儲(chǔ)學(xué)生選課的相關(guān)信息。主鍵:scsno、sco、scyear、scterm和sctno;外鍵:scsno(引用學(xué)生信息表的sno字段),sco(引用課程信息表的o字段),sctno(引用教師信息表的tno字段)。該表中scsno、sco、scyear、scterm和sctno屬性不允許為空值。(8) 學(xué)生獎(jiǎng)懲信息表的設(shè)計(jì)如表48所示:表48 學(xué)生獎(jiǎng)懲信息表 (evaluation)字段名類型說明enovarchar2(20)獎(jiǎng)懲編號(hào)esnovarchar2(20)學(xué)生編號(hào)edatevarchar2(12)獎(jiǎng)懲日期etypevarchar2(5)獎(jiǎng)懲類型enotevarchar2(200)獎(jiǎng)懲說明說明:本表用來存儲(chǔ)學(xué)生獎(jiǎng)懲的相關(guān)信息。主鍵:eno;外鍵:esno(引用學(xué)生信息表的sno字段)。該表中eno、esno、edate和etype屬性不允許為空值。獎(jiǎng)懲類型的取值為(“獎(jiǎng)”,“懲”)中的一個(gè)。(9) 學(xué)籍變動(dòng)信息表的設(shè)計(jì)如表49所示:表49學(xué)籍變動(dòng)信息表(change)字段名類型說明chnovarchar2(20)學(xué)籍變動(dòng)編號(hào)chsnovarchar2(20)學(xué)生編號(hào)chdatevarchar2(12)變動(dòng)日期chtypevarchar2(10)變動(dòng)類型chnewschoolvarchar2(30)轉(zhuǎn)入學(xué)校名稱chdeptvarchar2(20)轉(zhuǎn)入院系編號(hào)chcgvarchar2(20)轉(zhuǎn)入班級(jí)編號(hào)chreasonvarchar2(200)學(xué)籍變動(dòng)原因chnotevarchar2(200)備注說明:本表用來存儲(chǔ)學(xué)籍變動(dòng)的相關(guān)信息。主鍵:chno;外鍵:chsno(引用學(xué)生信息表的sno字段),chdept(引用院系信息表的dno字段),chcg(引用班級(jí)信息表的cgno字段)。該表中chno、chsno、chdate和chtype屬性不允許為空值。變動(dòng)類型包括退學(xué)、休學(xué)、轉(zhuǎn)校和調(diào)班四種情況。當(dāng)變動(dòng)類型為退學(xué)和休學(xué)時(shí),chnewschool、chdept和chcg字段不填;當(dāng)變動(dòng)類型為轉(zhuǎn)學(xué)時(shí),chnewschool、chdept和chcg字段中只需填寫chnewschool字段;當(dāng)變動(dòng)類型為調(diào)班時(shí),chnewschool、chdept和chcg字段中只需填寫chdept和chcg字段。(10) 管理員用戶信息表的設(shè)計(jì)如表410所示:表410 管理員用戶信息表 (adminuser)字段名類型說明adnamevarchar2(20)用戶名userpwvarchar2(20)登錄密碼說明:本表用來存儲(chǔ)管理員的信息。主鍵:adname。該表中各屬性均不允許為空值。(11) 用戶登錄信息表的設(shè)計(jì)如表411所示:表411 用戶登錄信息表 (logininfo)字段名類型說明loginidvarchar2(20)登錄用戶logindatevarchar2(12)登錄日期logintimevarchar2(10)登錄時(shí)間說明:本表用來存儲(chǔ)用戶登錄的信息。主鍵:loginid、logindate和logintime。該表中各屬性均不允許為空值。 角色設(shè)計(jì) 根據(jù)需求,類型不同的用戶使用系統(tǒng)時(shí)的權(quán)限也不相同。為了簡(jiǎn)化開發(fā)客戶端時(shí)創(chuàng)建用戶后的一系列授權(quán),我們可以先創(chuàng)建幾個(gè)角色,給不同角色授予不同的權(quán)限。然后在創(chuàng)建用戶后直接授予用戶角色,一條SQL語句即可解決問題。經(jīng)過分析,系統(tǒng)所需要四個(gè)角色,分別對(duì)應(yīng)四種不同類型的用戶。各角色定義如下:(1) 學(xué)生角色:學(xué)生角色是需要授予學(xué)生用戶的一個(gè)角色,根據(jù)學(xué)生用戶的需求,其應(yīng)具有連接數(shù)據(jù)庫(kù)的權(quán)限、查詢學(xué)生信息表等相關(guān)表的權(quán)限、更新學(xué)生信息表的權(quán)限、在學(xué)生選課信息表里插入以及刪除記錄的權(quán)限、在用戶登錄信息表里插入記錄的權(quán)限等,因此創(chuàng)建學(xué)生角色并對(duì)其進(jìn)行相應(yīng)授權(quán)如下: create role sturole。 grant connect, resource, select any table to sturole。 grant update on to sturole。 grant delete on to sturole。 grant insert on to sturole。 grant insert on to sturole。(2) 教師角色:教師角色是需要授予教師用戶的一個(gè)角色,根據(jù)教師用戶的需求,其應(yīng)具有連接數(shù)據(jù)庫(kù)的權(quán)限、查詢教師信息表等相關(guān)表的權(quán)限、更新教師信息表的權(quán)限、更新學(xué)生選課信息表(錄入或者修改成績(jī))的權(quán)限、在用戶登錄信息表里插入記錄的權(quán)限等,因此創(chuàng)建教師角色并對(duì)其進(jìn)行相應(yīng)的授權(quán)如下: create role tearole。 grant connect, resource, select any table to tearole。 grant update on to tearole。 grant update on to tearole。 grant insert on to tearole。(3) 院系角色:院系角色是需要授予院系用戶的一個(gè)角色,根據(jù)院系用戶的需求,其應(yīng)具有連接數(shù)據(jù)庫(kù)的權(quán)限、對(duì)所有表進(jìn)行增刪改查的系統(tǒng)權(quán)限,另外,由于院系用戶需要?jiǎng)?chuàng)建教師和學(xué)生用戶,因此其還應(yīng)具有將教師角色和學(xué)生角色授予其他用戶的權(quán)限。因此創(chuàng)建院系角色并對(duì)其進(jìn)行相應(yīng)的授權(quán)如下: create role deptrole。 grant connect, resource, select any table, delete any table, insert any table, update any table to deptrole。 grant create user, drop user, alter user to deptrole。 grant sturole, tearole to deptrole with admin option。(4) 普通管理員角色:普通管理員角色是需要授予新創(chuàng)建的管理員的一個(gè)角色,根據(jù)管理員用戶的需求,其應(yīng)具有連接數(shù)據(jù)庫(kù)的權(quán)限、對(duì)所有表進(jìn)行增刪改查的系統(tǒng)權(quán)限,另外,由于管理員用戶需要?jiǎng)?chuàng)建院系用戶,因此其還應(yīng)具有將院系角色、教師角色和學(xué)生角色授予其他用戶的權(quán)限。因此創(chuàng)建管理員角色并對(duì)其進(jìn)行相應(yīng)的授權(quán)如下: create role adminrole。 grant connect, resource, select any table, delete any table, insert any table, update any table to adminrole。 grant create user, drop user, alter user to adminrole。 grant sturole, tearole, deptrole to adminrole with admin option。在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),好的觸發(fā)器設(shè)計(jì)會(huì)大大簡(jiǎn)化應(yīng)用程序的開發(fā)。根據(jù)系統(tǒng)功能與數(shù)據(jù)流圖,我們?yōu)楸鞠到y(tǒng)設(shè)計(jì)一些觸發(fā)器如下:(1) 刪除某個(gè)教師時(shí),如果該教師是某個(gè)班級(jí)的班主任,要將其更新為空值;刪除該教師的授課信息;刪除選該教師課的學(xué)生選課信息;刪除該教師用戶的所有登錄信息。據(jù)此,我們?cè)O(shè)計(jì)觸發(fā)器:create or replace trigger del_teacherbefore delete on teacherfor each rowbegin update classandgrade set cgheadt=NULL where cgheadt=:。 delete from tc where tctno=:。 delete from sc where sctno=:。 delete from logininfo where loginid=:。end del_teacher。(2) 刪除課程信息時(shí),應(yīng)將選擇該門課程的教師授課信息和學(xué)生選課信息刪除。據(jù)此,我們?cè)O(shè)計(jì)觸發(fā)器:create or replace trigger del_coursebefore delete on coursefor each rowbegin delete from sc where sco=:。 delete fr