未 培
(安徽工商職業(yè)學(xué)院 電子信息系,安徽 合肥 230041)
本文引用的企業(yè)工資管理系統(tǒng)的開發(fā)軟件是Microsoft Visual Studio 2008和sql server 2005,在系統(tǒng)開發(fā)過程中,結(jié)合本系統(tǒng)的特點,為減少網(wǎng)絡(luò)通信流量,提高系統(tǒng)的穩(wěn)定性,舍棄了常規(guī)的設(shè)計方案,將主要的業(yè)務(wù)邏輯處理模塊都設(shè)計成存儲過程,充分地利用了存儲過程的優(yōu)點,體現(xiàn)了模塊化程序設(shè)計的思想.
存儲過程是由一系列的T—SQL語句組成的程序模塊,每個存儲過程以一個名字存儲并作為一個單元處理.存儲過程可由程序調(diào)用執(zhí)行,并且可以帶有參數(shù)、有條件執(zhí)行以及其他強大的編程功能[1].存儲過程可以使對數(shù)據(jù)庫的管理以及顯示關(guān)于數(shù)據(jù)庫及其用戶信息的工作容易得多.
(1)提高了程序執(zhí)行效率.應(yīng)用程序中的SQL語句需經(jīng)過編譯和優(yōu)化才能執(zhí)行,而存儲過程是已經(jīng)編譯和優(yōu)化的SQL語句[2].因此,在應(yīng)用程序中使用存儲過程相對于直接使用SQL語句來說,程序的執(zhí)行效率要高,同時,存儲過程第一次被執(zhí)行后,執(zhí)行規(guī)劃就駐留在高速緩存中.后面每次操作,只需要從高速緩存中調(diào)用即可[1].
(2)具有較高的安全性.存儲過程作為數(shù)據(jù)庫的一種對象,只有擁有相應(yīng)權(quán)限的用戶才能執(zhí)行它,而不需要對其中引用的對象擁有訪問權(quán)限.通過存儲過程可以使限制權(quán)限用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全.并且通過存儲過程可以使相關(guān)的動作在一起發(fā)生,從而可以維護數(shù)據(jù)庫的完整性[3].
(3)能減少網(wǎng)絡(luò)通信流量負(fù)擔(dān).存儲過程在服務(wù)器端執(zhí)行,用戶每次執(zhí)行只需要發(fā)出一條執(zhí)行命令即可,而不需要發(fā)出所有的代碼,從而減少了網(wǎng)絡(luò)的數(shù)據(jù)流量[4].
(4)提高了代碼的重用性和程序的可維護性.存儲過程一旦被創(chuàng)建,以后就可以在所有程序中被多次調(diào)用,有利于程序的模塊化設(shè)計[5].
(5)單純的sql語句無法達到流程控制,也不能完成復(fù)雜的判斷和較復(fù)雜的運算,而通過存儲過程可以實現(xiàn).存儲過程的運用大大增強了SQL語言的功能和靈活性[6].
(6)存儲過程的使用便于程序的修改.應(yīng)用程序都是根據(jù)企業(yè)規(guī)則設(shè)置不同的SQL語句,而企業(yè)的規(guī)則是多變,經(jīng)常會因為制度、業(yè)務(wù)等變化變換規(guī)則.如果企業(yè)規(guī)則在應(yīng)用程序中直接使用SQL語句實現(xiàn),當(dāng)規(guī)則變化后,就需要對應(yīng)用程序進行修改,可想而知修改很困難.如果使用存儲過程,則當(dāng)企業(yè)規(guī)則發(fā)生變化時,可通過在服務(wù)器中改變存儲過程即可,無須修改任何應(yīng)用程序,這樣既降低了程序修改、維護的難度,也大大提高了程序的可移植性[5].
使用存儲過程就是為了提高程序的執(zhí)行效率、增強可移植性、穩(wěn)定性.下面給出一些使用存儲過程的策略.
(1)需要一定運行效率的、重復(fù)調(diào)用的運算需要用存儲過程來實現(xiàn).存儲過程在創(chuàng)建時即在服務(wù)器上進行編譯并且駐留在高速緩存中,每次直接調(diào)用,不需要再次編譯,從而提高程序的執(zhí)行效率.如企業(yè)工資管理系統(tǒng)中員工月工資的核算功能用存儲過程來實現(xiàn),執(zhí)行效率就會比較高[3].
(2)需要對基本表進行比較復(fù)雜的邏輯處理才能返回所需的結(jié)果集最好用存儲過程來實現(xiàn).如果復(fù)雜的數(shù)據(jù)處理操作均放在客戶端由應(yīng)用程序來完成,會降低程序的執(zhí)行效率.
(3)可以通過存儲過程實現(xiàn)系統(tǒng)數(shù)據(jù)的安全性.比如,可以對一個用戶授權(quán)去調(diào)用存儲過程,執(zhí)行修改某特定的數(shù)據(jù)集,即使該用戶對表沒有任何其他的權(quán)限,這樣可以保證系統(tǒng)數(shù)據(jù)的安全性[4].
企業(yè)工資管理系統(tǒng)主要功能是能根據(jù)企業(yè)發(fā)放工資的標(biāo)準(zhǔn)及企業(yè)獎懲制度,迅速核算出各個員工的月工資情況,并能夠?qū)崿F(xiàn)員工個人工資查詢的功能.
根據(jù)對市場上一些中小企業(yè)的調(diào)查,企業(yè)工資管理平臺至少應(yīng)該包含員工基本信息的增、刪、改、查;企業(yè)員工月工資的核算以及員工個人月工資的查詢.具體的功能模塊可以用下圖1表示:
圖1 工資管理平臺功能模塊圖
圖2 后臺數(shù)據(jù)庫E-R圖
經(jīng)過對多個中小企業(yè)調(diào)查分析,企業(yè)工資管理包含的主要信息有員工基本信息、固定工資、獎金、罰金、職稱等.一般會根據(jù)員工的職稱或資歷確定員工的固定工資一塊,當(dāng)然固定工資中也包含多項,比如:基本工資、崗位津貼、生活補貼等,除了固定工資模塊,每個企業(yè)都會有相應(yīng)的獎懲機制,員工在遵守這些制度的同時也會受到相應(yīng)的獎勵和處罰,最后員工工資應(yīng)該是有固定工資、獎金、罰金等多部分組成.系統(tǒng)后臺數(shù)據(jù)庫E-R圖及各表之間的關(guān)系如圖2、圖3所示.
圖3 后臺數(shù)據(jù)庫關(guān)系圖
基于存儲過程的優(yōu)點,在企業(yè)工資管理系統(tǒng)開發(fā)過程中充分利用了存儲過程,多個部分的實現(xiàn)都是有存儲過程完成的.下面重點介紹本系統(tǒng)比較重要的模塊,即員工月工資核算模塊和員工個人工資查詢模塊的實現(xiàn).
在工資管理系統(tǒng)中,創(chuàng)建一存儲過程,當(dāng)其被調(diào)用時,給出時間參數(shù),就能核算出該時間的所有員工月工資,核算月工資代碼如下:
如下執(zhí)行存儲過程fygz即能得到指定月份的員工工資
exec fygz 2013,3
工資管理系統(tǒng)除了能核算員工月工資一塊,還應(yīng)該能供每個員工查詢自己的工資,即當(dāng)員工提供自己的工號和時間,就應(yīng)該查詢出該員工該月份的工資情況,下面的存儲過程就能實現(xiàn)員工工資的查詢,代碼如下:
企業(yè)工資管理系統(tǒng)開發(fā)過程中,多個部分使用了SQL SERVER2005中的存儲過程,通過實際應(yīng)用表明,存儲過程的使用降低了系統(tǒng)開發(fā)難度,減少了網(wǎng)絡(luò)數(shù)據(jù)通信流量,提高了系統(tǒng)的執(zhí)行效率.
〔1〕常國權(quán).卜耀華.SQL SERVER 2005數(shù)據(jù)庫實訓(xùn)教程.
〔2〕亓文娟.對Sql Server存儲過程存儲過程的研究與應(yīng)用[J].廊坊師范學(xué)院學(xué)報(自然科學(xué)版),2010(12).
〔3〕陳曉珊.Sql Server存儲過程淺析[J].科技信息,2008(7).
〔4〕馬曉榮.吳銀川.存儲過程在圖書管理系統(tǒng)中的設(shè)計與實現(xiàn)[J].電子測量,2013(4).
〔5〕葉柯.淺談MSSQL Server數(shù)據(jù)庫查詢優(yōu)化[J].寧波廣播電視大學(xué)學(xué)報,2007(01).
〔6〕鄧景順,黃杰.SQL Server中多行數(shù)據(jù)更新的觸發(fā)器應(yīng)用研究[J].山西大同大學(xué)學(xué)報(自然科學(xué)版),2010(02).