楊軍莉
(陜西財(cái)經(jīng)職業(yè)技術(shù)學(xué)院,陜西咸陽(yáng),712000)
在現(xiàn)代社會(huì)中學(xué)校的學(xué)生信息管理工作,都在向自動(dòng)化、網(wǎng)絡(luò)化發(fā)展,因此各種基于WEB的學(xué)生信息管理系統(tǒng)成為學(xué)校工作的熱點(diǎn),但是各種學(xué)生信息管理系統(tǒng)的設(shè)計(jì)中都有一個(gè)關(guān)鍵部分就是它的數(shù)據(jù)庫(kù)設(shè)計(jì)部分。合理地設(shè)計(jì)學(xué)生信息管理系統(tǒng)的數(shù)據(jù)庫(kù)能夠極大地提高學(xué)生管理工作和相關(guān)管理人員的工作效率,同時(shí)對(duì)于提高現(xiàn)有管理水平有著重要的意義。
概念模型,也稱(chēng)為信息模型,是從用戶(hù)的角度出發(fā)來(lái)對(duì)信息建摸;它是設(shè)計(jì)人員和用戶(hù)之間進(jìn)行交流的一個(gè)強(qiáng)有力的工具。由于概念模型是對(duì)信息世界建摸,所以概念模型應(yīng)該能夠方便、準(zhǔn)確地表達(dá)出信息世界中的事物及其聯(lián)系。常用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型?,F(xiàn)實(shí)世界中的各種事物都不是孤立的,它們相互間存在著千絲萬(wàn)縷的聯(lián)系著,信息管理系統(tǒng)中必須要真實(shí)地反映出現(xiàn)實(shí)世界中和個(gè)實(shí)體之間的這些聯(lián)系?,F(xiàn)實(shí)世界中實(shí)體之間的聯(lián)系共有三大種類(lèi)即:一對(duì)一、一對(duì)多和多對(duì)多,在學(xué)生信息管理系統(tǒng)中存在的就是這三種基本的聯(lián)系:一個(gè)系擁有若干名學(xué)生,但是一個(gè)學(xué)生只能屬于一個(gè)系,因此系與學(xué)生之間的聯(lián)系屬于一對(duì)多聯(lián)系,其中系是一方,而學(xué)生是多方。一個(gè)系擁有多名教師,但是一個(gè)教師只能在一個(gè)系里工作,因此系與教師之間的聯(lián)系屬于一對(duì)多聯(lián)系,其中系是一方,而教師則是多方。同時(shí)由于不管是學(xué)生還是教師都是與系有聯(lián)系的,所以系是學(xué)生實(shí)體和教師實(shí)體之間的橋梁。另外學(xué)生在學(xué)校期間必須要學(xué)習(xí)課程,且每學(xué)習(xí)完一門(mén)課程之后學(xué)生都要參加考試,從而產(chǎn)生成績(jī),因此學(xué)生和課程之間也有聯(lián)系。由于一個(gè)學(xué)生可以學(xué)習(xí)多門(mén)課程,另一方面一門(mén)課程可以被多個(gè)學(xué)生所學(xué)習(xí),因此學(xué)生和課程之間的聯(lián)系的類(lèi)型是多對(duì)多聯(lián)系。通過(guò)對(duì)各種學(xué)生信息管理系統(tǒng)中涉及到的實(shí)體及其聯(lián)系的分析,得出如圖1所示的系統(tǒng)整體E-R圖。
按照需求分析得出的學(xué)生信息管理系統(tǒng)的整體E-R模型,現(xiàn)在設(shè)計(jì)數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)名是studentdb;數(shù)據(jù)庫(kù)服務(wù)器是SQL Server2005。由于本系統(tǒng)將采用SQL Server2005這種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)存儲(chǔ)和管理數(shù)據(jù)的,但是關(guān)系數(shù)據(jù)管理系統(tǒng),對(duì)于這種多對(duì)多聯(lián)系卻不能直接處理。所以要用一種方法來(lái)變換這種多對(duì)多聯(lián)系,從而使得關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)能夠間接地處理,達(dá)到解決問(wèn)題的目的。根據(jù)多對(duì)多分解的原則必須保證分解出來(lái)的結(jié)果既具有無(wú)損性的特點(diǎn),而且還必須使得分解保持住原來(lái)的函數(shù)依賴(lài)。在本系統(tǒng)中通過(guò)引入一個(gè)中間關(guān)系即成績(jī)關(guān)系來(lái)把學(xué)生和課程這兩個(gè)實(shí)體之間的多對(duì)多聯(lián)系,轉(zhuǎn)換為兩個(gè)一對(duì)多聯(lián)系??梢赃@樣理解一個(gè)學(xué)生學(xué)習(xí)完多門(mén)課程參加考試之后會(huì)產(chǎn)生多條成績(jī)信息,但是一條成績(jī)信息只能對(duì)應(yīng)著一個(gè)學(xué)生;同理一門(mén)課程在給多個(gè)學(xué)生講授完之后要進(jìn)行考試也會(huì)產(chǎn)生多條成績(jī)信息,但是一條成績(jī)信息只能對(duì)應(yīng)著一門(mén)課程。這樣便通過(guò)成績(jī)這個(gè)關(guān)系把學(xué)生實(shí)體和課程實(shí)體之間的多對(duì)多聯(lián)系分解為兩個(gè)一對(duì)多,并由成績(jī)這個(gè)關(guān)系把學(xué)生和課程這兩個(gè)關(guān)系聯(lián)系在一起且這種分解完全符合關(guān)系模式的分解上述兩個(gè)分解原則。這樣對(duì)應(yīng)到數(shù)據(jù)庫(kù)中,本系統(tǒng)的主要就主要由學(xué)生、系、教師、課程和成績(jī)關(guān)系組成,但是為了用戶(hù)管理的需要還要多增加一個(gè)登錄關(guān)系,當(dāng)然登錄關(guān)系里的用戶(hù)只有兩種類(lèi)型,不是學(xué)生便是教師。所以登錄關(guān)系與學(xué)生和教師這兩個(gè)關(guān)系是一一對(duì)應(yīng)的聯(lián)系,即一對(duì)一聯(lián)系。綜上所述本系統(tǒng)里共有6個(gè)關(guān)系,現(xiàn)僅列出score表的結(jié)構(gòu),如表1所示。
表1 score表結(jié)構(gòu)
在分析了以上實(shí)體之間聯(lián)系的種類(lèi)之后,還要分析各實(shí)體及實(shí)體之間的完整性約束。表的完整性約束共分為三種,第一種是實(shí)體完整性規(guī)則,第二種是參照完整性規(guī)則,第三種是用戶(hù)定義的完整性規(guī)則。在本系統(tǒng)中存在實(shí)體之間的這三種完整性,從而保證各個(gè)表的完整性。登錄表中可以在用戶(hù)名上建立主鍵,保證了該表中沒(méi)有重復(fù)的元組出現(xiàn),這樣就可實(shí)現(xiàn)實(shí)體完整性。學(xué)生表中在學(xué)號(hào)上建立主鍵,保證了該表中沒(méi)有重復(fù)的元組出現(xiàn),這樣就可以實(shí)現(xiàn)實(shí)體完整性。其次,學(xué)生表中的系號(hào)雖然不是本表的主鍵,但它是系表的主鍵,所以系號(hào)可以作為學(xué)生表的外鍵,因此學(xué)生表中的系號(hào)不能隨便取值,只能參照系表中系號(hào)的取值,這樣通過(guò)系號(hào)這個(gè)外鍵實(shí)現(xiàn)了參照完整性。還有,學(xué)生表中的性別字段取值只能是“男”或“女”,這種類(lèi)型的約束就是所謂的域完整性規(guī)則,域完整性約束屬于用戶(hù)定義的完整性的一種。教師表中在工號(hào)上建立主鍵,保證了該表中沒(méi)有重復(fù)的元組出現(xiàn),這樣可以通過(guò)工號(hào)來(lái)實(shí)現(xiàn)實(shí)體完整性。其次,教師表中的系號(hào)雖然不是本表的主鍵,但它卻是系表中主鍵所以系號(hào)可以作為教師表的外鍵,因此教師表中的系號(hào)不能隨便取值,只能參照系表中系號(hào)的取值,這樣通過(guò)系號(hào)這個(gè)外鍵即可實(shí)現(xiàn)參照完整性。還有,教師表中的性別字段取值只能是“男”或“女”,這樣可以和學(xué)生表類(lèi)似在性別字段上建立域完整性規(guī)則,從而實(shí)現(xiàn)用戶(hù)定義的完整性。課程表中可以在課程號(hào)字段上建立主鍵,保證了該表中沒(méi)有重復(fù)的元組出現(xiàn),從而就可通過(guò)課程號(hào)來(lái)實(shí)現(xiàn)實(shí)體完整性。然而成績(jī)表中的學(xué)號(hào)字段對(duì)應(yīng)著多條元組,因此學(xué)號(hào)單獨(dú)無(wú)法作為主鍵;同樣課程號(hào)也對(duì)應(yīng)著多條元組,因此當(dāng)單獨(dú)的某個(gè)字段已經(jīng)無(wú)保證該表中沒(méi)有重復(fù)的元組,在這種情況下,必須復(fù)合字段作為主鍵,因此可以選擇使用學(xué)號(hào)和課程號(hào)的組合作為主鍵,這樣就可以保證成績(jī)表中不會(huì)出現(xiàn)重復(fù)的元組,從而通過(guò)復(fù)合主鍵來(lái)實(shí)現(xiàn)實(shí)體完整性。其次,成績(jī)表中的學(xué)號(hào)雖然不能單獨(dú)作為本表的主鍵,但它卻是學(xué)生表中的主鍵,因此學(xué)號(hào)可以作為成績(jī)表的外鍵,同時(shí)成績(jī)表中的學(xué)號(hào)不能隨便取值,只能參照學(xué)生表中學(xué)號(hào)的取值范圍,這樣通過(guò)學(xué)號(hào)這個(gè)外鍵可以實(shí)現(xiàn)了參照完整性;同理,成績(jī)表中的課程號(hào)也不能單獨(dú)作為本表的主鍵,但它卻是課程表中的主鍵,因此課程號(hào)可以作為成績(jī)表的外鍵,同時(shí)成績(jī)表中的課程號(hào)不能隨便取值,只能參照課程表中課程號(hào)的取值范圍,這樣就可以通過(guò)課程號(hào)這個(gè)外鍵實(shí)現(xiàn)參照完整性。系表中可以選擇使用系號(hào)作為主鍵,這樣可以保證本表中無(wú)重復(fù)的元組出現(xiàn),從而實(shí)現(xiàn)了實(shí)體完整性。
當(dāng)一個(gè)學(xué)生畢業(yè)時(shí)系統(tǒng)應(yīng)能夠刪除這個(gè)學(xué)生的基本信息及相應(yīng)的成績(jī)信息,這也是所謂的級(jí)聯(lián)刪除,在SQL Server 2005中可以用觸發(fā)器來(lái)實(shí)現(xiàn)這一特殊的業(yè)務(wù)規(guī)則。觸發(fā)器顧名思義,當(dāng)觸發(fā)動(dòng)作成功發(fā)生時(shí)自動(dòng)執(zhí)行。打個(gè)比方,觸發(fā)動(dòng)作相當(dāng)于導(dǎo)火索,只有成功點(diǎn)燃導(dǎo)火索才能使炸藥包爆炸。使用觸發(fā)器必須分清楚哪些操作是觸發(fā)事件,而哪些操作是觸發(fā)器內(nèi)部自動(dòng)執(zhí)行的動(dòng)作。在學(xué)生信息管理數(shù)據(jù)庫(kù)中,如果當(dāng)刪除學(xué)生的基本信息時(shí),要自動(dòng)刪除其相應(yīng)的成績(jī)信息,那么首先刪除該學(xué)生基本信息是一個(gè)觸發(fā)動(dòng)作且作用在stu表上;只有當(dāng)成功刪除該學(xué)生的基本信息后即導(dǎo)火索成功點(diǎn)燃之后,才能使觸發(fā)器啟動(dòng)并自動(dòng)執(zhí)行其內(nèi)部動(dòng)作即刪除其成績(jī)信息,觸發(fā)器應(yīng)建立在stu表上,而觸發(fā)器內(nèi)部自動(dòng)執(zhí)行的動(dòng)作應(yīng)作用在score表,現(xiàn)舉例如下:
delete from stu--觸發(fā)語(yǔ)句作用在student表上
go
create trigger stu_score_tri
on student--觸發(fā)器也建立在student表上
after delete
as
delete from score--觸發(fā)器內(nèi)部的動(dòng)作卻是作用在score表上用來(lái)實(shí)現(xiàn)級(jí)聯(lián)刪除
where sno in(select sno
from deleted)
go
可以看出觸發(fā)器在應(yīng)用中,一般都會(huì)用到兩個(gè)特殊的邏輯表即inserted表和deleted表。這兩個(gè)表都是只讀的邏輯表,它們動(dòng)態(tài)駐留在內(nèi)存中,在執(zhí)行DML操作時(shí)這兩個(gè)表才存在,且對(duì)它們的引用只能在觸發(fā)器中實(shí)現(xiàn),而當(dāng)觸發(fā)器工作完成后,這兩個(gè)表也隨之被刪除,這兩個(gè)表主要保存因用戶(hù)操作而被影響到的原數(shù)據(jù)值或新數(shù)據(jù)值,在inserted表中存儲(chǔ)新值,而在deleted表中存儲(chǔ)舊值。對(duì)于insert操作來(lái)說(shuō)只影響到inserted表;對(duì)于delete操作只影響deltede表;而對(duì)于update操作來(lái)說(shuō)既影響inserted表也會(huì)影響到deleted表,它把新修改的值存入inserted表,而舊值存入deleted表。只有在觸發(fā)器中才能捕獲到這兩個(gè)邏輯表,在觸發(fā)器中通過(guò)引用表中的數(shù)據(jù),能夠?qū)崿F(xiàn)級(jí)聯(lián)刪除;同理,也可以仿照上面所舉的例子來(lái)實(shí)現(xiàn)級(jí)聯(lián)修改。
圖1 整體E-R圖
總之,隨著在校學(xué)生人數(shù)的增長(zhǎng),學(xué)生信息管理系統(tǒng)所處理的數(shù)據(jù)越來(lái)越大,如何有效地管理學(xué)生的各種信息,有效提高工作效率,是開(kāi)發(fā)學(xué)生信息管理系統(tǒng)中首要考慮的問(wèn)題。因此應(yīng)根據(jù)實(shí)際情況,利用關(guān)系理論,設(shè)計(jì)出合理高效的學(xué)生信息管理系統(tǒng)中的數(shù)據(jù)庫(kù)是開(kāi)發(fā)學(xué)生信息管理系統(tǒng)的關(guān)鍵因素。
[1]孟祥娜,秦玉平.基于SQL Server的學(xué)生學(xué)籍管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)[J].電腦編程技巧與維護(hù)2013,20: 50-52.
[2]梁小曉,韋崇崗.基于Web的高校學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2010,6: 699-703.
[3]謝東,徐艷,陳志峰.節(jié)約型數(shù)字化校園建設(shè)理念及實(shí)踐[J].北京:中國(guó)教育信息化,2010(3):15-16.
[4]趙靜宇.數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范化的理論研究與應(yīng)用[J].繼續(xù)教育研究, 2013,21:208.
[5]韋耿.數(shù)據(jù)庫(kù)設(shè)計(jì)在網(wǎng)站管理系統(tǒng)中的應(yīng)用簡(jiǎn)[J].數(shù)字技術(shù)與應(yīng)用,2013,9:67-68.