韓天亮
摘要:本文利用SQLite嵌入式數(shù)據(jù)庫設(shè)計了輕量級的人事信息管理系統(tǒng)數(shù)據(jù)存儲模型,由于SQLite本身其具有嵌入式、輕量級、便于操作等特性,使得人事信息的管理變得具有很大的彈性,方便開發(fā)人員和管理人員進(jìn)行二次開發(fā),提高了系統(tǒng)的市場普及率。
關(guān)鍵詞:人事信息管理;數(shù)據(jù)庫設(shè)計;SQLite
1 背景分析
現(xiàn)如今,人事信息軟件普遍規(guī)模較大,功能較強(qiáng)。但由于價格昂貴、專業(yè)要求高、軟件部署復(fù)雜、后期維護(hù)成本高等原因,客戶群體主要是大中型企業(yè)及團(tuán)體[1]。但是通過市場分析可知,雖然多數(shù)小型企業(yè)及團(tuán)體沒有使用人事信息管理軟件,但其市場需求是客觀存在的。如果開發(fā)一款體量小、功能實用、價格低廉的人事管理軟件,便可以彌補(bǔ)此方面市場的空缺。
2 數(shù)據(jù)庫需求分析
在大型人事信息管理系統(tǒng)中,人事信息的存儲與管理是至關(guān)重要的。由于大型系統(tǒng)數(shù)據(jù)量大、操作頻繁,性能要求極高,因此普遍采用Sqlserver、Oracle等大型數(shù)據(jù)庫系統(tǒng)[2]。眾所周知,這些系統(tǒng)的使用是需要付費(fèi)的,這也增加了用戶的使用成本。在數(shù)據(jù)表設(shè)計過程中,為了提高運(yùn)算性能,通常數(shù)據(jù)表都是固定的。雖然這樣設(shè)計提高了運(yùn)算性能,但也降低了數(shù)據(jù)存儲與管理的靈活性。當(dāng)用戶對數(shù)據(jù)項有特殊要求時,用戶幾乎沒有修改的余地。本文使用SQLite作為系統(tǒng)數(shù)據(jù)庫。
3 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計
出于降低使用成本、降低部署難度等方面的因素,本文使用嵌入式的輕量級數(shù)據(jù)庫SQLite作為系統(tǒng)數(shù)據(jù)庫。SQLite[3],是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項目。它的設(shè)計目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。
本文設(shè)計了人事信息主表,用來定義用戶的登錄信息。其定義主要如下所示:
create table users(
Id int primary key identity(1,1),--用戶Id
Name char not null,--登錄名
Pwd nvarchar not null,--登錄密碼
RoleId nvarchar,--角色I(xiàn)d
LoginTime datetime,--最后登錄時間
LoginState bit default(false),--登錄狀態(tài)
Times int--登錄次數(shù));
可見,本信息表主要是存儲了用戶登錄的相關(guān)信息,用戶的其它信息都是以Users表為基準(zhǔn)的。本系統(tǒng)將人事信息系統(tǒng)數(shù)據(jù)庫表劃分為兩大類,包括基本數(shù)據(jù)類和擴(kuò)展數(shù)據(jù)類。其中基礎(chǔ)數(shù)據(jù)類包括用戶表(Users),系統(tǒng)信息表(sysInfo),角色表(authorityInfo)等;擴(kuò)展數(shù)據(jù)類主要有:自然信息表(NatureInfo)、教育信息表(EduInfo)、聯(lián)系信息表(ContactInfo)、職稱信息表(JobInfo)等。且其它所有人事信息表的身份證號或護(hù)照號均與users表的身份證號或護(hù)照號聯(lián)動。本系統(tǒng)表與表之間關(guān)系如圖(1)所示。
圖(1)系統(tǒng)表間關(guān)系
數(shù)據(jù)庫人事信息主要會產(chǎn)生四種操作,主要有“增、刪、改、查”。其處理方式如下:
(1)增加操作:當(dāng)主表有信息條目插入時,主表會觸發(fā)相關(guān)觸發(fā)器,觸發(fā)器會自動向其它信息表插入信息,其插入的數(shù)據(jù)主鍵ID與主表ID相同;同時也會插入用戶的身份證號碼,如果是外籍人員則插入護(hù)照號碼。其余數(shù)據(jù)項為空或其它默認(rèn)值。
(2)刪除操作:對于人事信息的刪除,本文設(shè)計只將主表信息進(jìn)行刪除,而不會刪除擴(kuò)展數(shù)據(jù)區(qū)信息表,除非人工刪除。這樣做的目的在于人事信息留痕,防止誤刪。
(3)修改操作:本文設(shè)定主鍵(即ID)和身份證號碼是不可修改的。
(4)查詢操作:本文通過人事信息表的左連接操作,將數(shù)據(jù)表連接成一個“大”表,這樣做雖然降低了運(yùn)算效率,但是卻直接降低了邏輯難度,提高了開發(fā)效率;現(xiàn)在的硬件運(yùn)算能力較強(qiáng),并且中小企業(yè)的人事信息數(shù)據(jù)較少,因此,這樣的設(shè)計是完全可以接受的。
當(dāng)擴(kuò)展區(qū)數(shù)據(jù)庫表不能滿足用戶信息存儲的需求時,用戶可在遵從以上規(guī)則的情況下,在擴(kuò)展數(shù)據(jù)區(qū)域內(nèi)自定義數(shù)據(jù)表,用于增加數(shù)據(jù)項目。這樣處理理論上可以無限增加用戶數(shù)據(jù)的維度,最大限度地滿足用戶的需求。
4 實驗與總結(jié)
本文利用SQLite其本身具有嵌入式、輕量級、便于操作等特性,使得人事信息的管理變得具有很大彈性,方便開發(fā)人員和管理人員進(jìn)行二次開發(fā)利用,提高了系統(tǒng)的市場普及率。理論上SQLite并發(fā)能力并不強(qiáng),但通過合理設(shè)置后則完全可以滿足需求。通過實驗可知,當(dāng)用戶存儲量在1000人時,并發(fā)量在100人以內(nèi)時,數(shù)據(jù)讀取及更新延遲較小,完全可以接受。這樣的運(yùn)算能力足以滿足中小企業(yè)和團(tuán)體的需求。未來的日子,我們將繼續(xù)努力,設(shè)計出更好更優(yōu)的信息系統(tǒng)。
參考文獻(xiàn):
[1]陳怡,余開朝.基于Web的人力資源績效管理系統(tǒng)研究[J].電訊技術(shù):工業(yè)工程版,2005.
[2]余盤祥.數(shù)據(jù)庫系統(tǒng)基礎(chǔ)[M].北京:清華大學(xué)出版社,2015.
[3]百度百科 SQLite https://baike.baidu.com/item/SQLite/ 375020? fr=aladdin