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