數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計人事管理系統(tǒng)設(shè)計
山西農(nóng)業(yè)大學(xué)資源環(huán)境學(xué)院
《數(shù)據(jù)庫系統(tǒng)原理》課程設(shè)計
課程設(shè)計題目 人事管理系統(tǒng)設(shè)計
班級
課程設(shè)計小組成員:
姓名 學(xué)號
姓名 學(xué)號
姓名 學(xué)號
姓名 學(xué)號
授課教師
指導(dǎo)教師
組 長
2011年12月 23 日
目 錄
1 系統(tǒng)功能概述 1
2 需求分析階段 1
2.1 信息需求分析 2
2.2 功能需求分析 2
2.3 數(shù)據(jù)流程圖 2
3 數(shù)據(jù)字典 3
4 概念結(jié)構(gòu) 7
5 邏輯設(shè)計 11
6 物理設(shè)計 12
7 用SQL實現(xiàn) 13
8 查詢與測試結(jié)果 20
9 課程總結(jié) 25
1 系統(tǒng)功能概述
一個正常運行的公司必定有一個健全的人事管理系統(tǒng),人事管理系統(tǒng)可以有條不紊的管理一個企業(yè)的所有員工的方方面面的信息,更加促進(jìn)和更加方便公司的其他管理方面的工作。來管理員工的信息,包括員工的編號,姓名,參加工作時間,職稱,出生年月,所在部門等情況,除了這些基本的用處外,此系統(tǒng)還提供如下功能:對員工基本信息表的新建、輸入、修改、查詢、刪除等功能,以及以不同類別統(tǒng)計符合條件的員工信息、查詢、統(tǒng)計的結(jié)果打印輸出等功能,使公司的人事管理既方便快捷而又清晰。面對各類不同的信息,需要合理的數(shù)據(jù)庫結(jié)構(gòu)來保存數(shù)據(jù)信息以及有效地程序結(jié)構(gòu)來支持各類數(shù)據(jù)操作的執(zhí)行。
我們現(xiàn)在介紹的這個人事管理系統(tǒng)是一個非常通用的管理系統(tǒng),它講述如何建立一個公司的人事管理系統(tǒng),它可以將關(guān)于員工的一切信息記錄在案,并且對其進(jìn)行輸入、修改、查詢、刪除,大大提高了公司員工管理的工作效率。
2 需求分析階段
需求分析的過程可以說是一個對具體問題的反復(fù)理解和抽象的過程。理解就是對現(xiàn)實問題的理解,要弄清楚究竟需要解決什么問題。抽象就是除去問題的表面,提取問題的本質(zhì),建立問題的邏輯模型,以便于以后階段的系統(tǒng)的設(shè)計實現(xiàn)。需求分析階段是軟件產(chǎn)品生存命期中的一個重要階段,其根本任務(wù)是確定用戶對軟件系統(tǒng)的需求。所謂需求是指用戶對軟件的功能和性能的要求,就是用戶希望軟件能什么事情,完成什么樣的功能,達(dá)到什么性能。此次課程設(shè)計的使用者是企業(yè)的員工,主要是針對系統(tǒng)的管理員。其進(jìn)行的操作就是對公司員工、部門等一些方面改動的改善。
人事管理是企業(yè)管理的一個重要內(nèi)容,隨著時代的進(jìn)步,企業(yè)也逐漸變得龐大起來,如何管理好企業(yè)內(nèi)部員工的信息,成為企業(yè)管理中一個重要的問題。在這種情況下,一個可以規(guī)?;⒆詣踊钠髽I(yè)人事管理系統(tǒng)就顯得非常重要。
最初的人事管理,都是靠人力來完成的。當(dāng)企業(yè)規(guī)模比較小的時候,人力可以完成,隨著企業(yè)規(guī)模越來越大,企業(yè)員工的人數(shù)越來越多,依然維持著人力進(jìn)行管理必然會造成工作效率低,工作錯誤也多等諸多問題。
人事管理系統(tǒng)就是把分散的企業(yè)單位員工信息實行統(tǒng)一,規(guī)范,集中的收集管理,建立分類編號管理,電腦存儲查詢、添加、刪除、修改等功能,這樣大大提高了公司的工作效率。由此對員工需求分析如下:
2.1 信息需求分析
(1)員工基本信息:員工編號,姓名,參加工作時間,職稱,出生年月,部門號;
(2)員工學(xué)歷信息:學(xué)歷編號,學(xué)歷,專業(yè),畢業(yè)學(xué)校,畢業(yè)時間;
(3)員工婚姻信息:姓名,身份證號,有無配偶;
(4)部門信息:部門號,部門名稱,部門經(jīng)理;
(5)管理員信息:管理員編號,姓名,密碼,權(quán)限。
2.2 功能需求分析
(1)員工信息管理功能:管理員工的相關(guān)信息,包括員工信息的查詢、添加、刪除,以及個人信息的修改;
(2)請假管理功能:對員工請假的記錄進(jìn)行統(tǒng)一編號;對員工的請假具體時段,請假原由進(jìn)行記錄;
(3)部門管理功能:對公司所有的部門進(jìn)行編號,建立部門記錄。
2.3數(shù)據(jù)流程圖
頂層數(shù)據(jù)流程圖
查詢信息流程圖
3 數(shù)據(jù)字典
數(shù)據(jù)字典一般應(yīng)包括對數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和數(shù)據(jù)處理的說明,下面是本系統(tǒng)的主要數(shù)據(jù)字典的描述:
主要數(shù)據(jù)項的定義
(1)數(shù)據(jù)項名稱:員工編號
含義說明:唯一標(biāo)識每個員工
別名:員工流水號
類型:字符型
長度:10
取值范圍:0000000000至9999999999
取值含義:前4位表示該員工參加工作年份,中間2位標(biāo)識該員工所在
部門,后4位按順序編號
(2)數(shù)據(jù)項名稱:部門號
含義說明:唯一標(biāo)識每個部門
別名:部門流水號
類型:字符型
長度:10
取值范圍:0000000000至9999999999
取值含義:前4位表示建立該部門的時間,中間2位表示該部門的級別,
后4位按順序編號.
(3)數(shù)據(jù)項名稱:管理員編號
含義說明:唯一標(biāo)識每個管理員
別名:管理員流水號
類型:字符型
長度:10
取值范圍:0000000000至9999999999
取值含義:前4位表示參加工作年份,后6位按順序編號
(4)數(shù)據(jù)項名稱:培訓(xùn)編號
含義說明:唯一標(biāo)識培訓(xùn)人員
別名:培訓(xùn)人員流水號
類型:字符型
長度:10
取值范圍:0000000000至9999999999
取值含義:前8位表示參加培訓(xùn)年月日,后2位按順序編號
(5)數(shù)據(jù)項名稱:學(xué)歷編號
含義說明:唯一標(biāo)識員工的學(xué)歷
別名:學(xué)歷流水號
類型:字符型
長度:10
取值范圍:AAA0000000至ZZZ9999999
取值含義:前3位表示,后4位按順序編號
與其他數(shù)據(jù)項的邏輯關(guān)系:
主要數(shù)據(jù)流定義:
(1)數(shù)據(jù)流名稱:員工情況
定義:員工編號+姓名+參加工作時間+職稱+出生年月+部門號
數(shù)據(jù)流量:根據(jù)公司的員工具體錄用情況來確定
說明:要對每一位被聘用的新員工進(jìn)行唯一編號
(2)數(shù)據(jù)流名稱:培訓(xùn)情況
定義:培訓(xùn)情況=員工編號+培訓(xùn)編號+培訓(xùn)時間+培訓(xùn)內(nèi)容+培訓(xùn)項目
數(shù)據(jù)流量:根據(jù)公司的具體情況來確定
說明:根據(jù)員工編號和培訓(xùn)編號可以唯一確定一個培訓(xùn)記錄
(3)數(shù)據(jù)流名稱:崗位情況
定義:崗位情況=員工編號+崗位+職務(wù)
數(shù)據(jù)流量: 根據(jù)公司的具體情況來確定
說明:要對每一個員工的崗位記錄確定崗位的人數(shù)需求
(4)數(shù)據(jù)流名稱:管理員情況
定義:用戶身份=員工編號
數(shù)據(jù)流量:根據(jù)公司的具體情況來確定
說明:要對每一位管理員建立唯一的賬號
(5)數(shù)據(jù)流名稱:部門情況
定義:部門情況=部門號+部門名稱+部門經(jīng)理
數(shù)據(jù)流量:根據(jù)公司的具體情況來確定
說明:部門號是主碼
主要數(shù)據(jù)存儲的定義
(1)數(shù)據(jù)存儲編號:員工記錄
數(shù)據(jù)結(jié)構(gòu):員工記錄=姓名+性別+出生日期+名族+學(xué)歷+職稱+員工編號
數(shù)據(jù)量和存取頻度:根據(jù)公司的具體情況來確定
說明:員工編號具有唯一性和非空性,性別只能是男生或者女生,主碼
是員工編號
(2)數(shù)據(jù)存儲編號:崗位記錄
數(shù)據(jù)結(jié)構(gòu):崗位記錄=員工編號+姓名+崗位+職務(wù)+部門號
數(shù)據(jù)量和存取頻度:根據(jù)公司的具體情況來確定
說明:主碼設(shè)為員工編號和部門號
(3)數(shù)據(jù)存儲編號:請假記錄
數(shù)據(jù)結(jié)構(gòu):請假記錄=員工編號+請假時段+請假原因
數(shù)據(jù)量和存取頻度:根據(jù)公司的具體情況來確定
說明:主碼設(shè)為員工編號
(4)數(shù)據(jù)存儲編號:培訓(xùn)記錄
數(shù)據(jù)結(jié)構(gòu):培訓(xùn)記錄=員工編號+培訓(xùn)時間+培訓(xùn)項目+培訓(xùn)編號
數(shù)據(jù)量和存取頻度:根據(jù)公司的具體情況來確定
說明:主碼設(shè)為培訓(xùn)編號
主要的處理過程:
(1)處理過程名:崗位管理
說明:為公司的員工安排崗位
輸入:員工情況和崗位情況
輸出:崗位安排
處理說明:根據(jù)公司員工的具體情況和部門的情況為員工合理的安排崗位。
(2)處理過程名:請假管理
說明:為公司的員工進(jìn)行請假方面的處理
輸入:請假原因,請假時段,員工編號
輸出:請假記錄
處理說明:根據(jù)員工的的請假原因和請假時段進(jìn)行請假表的登記。
(3)處理過程名:培訓(xùn)管理
說明:為新進(jìn)公司的員工安排培訓(xùn)
輸入:員工情況,培訓(xùn)編號,培訓(xùn)時間,培訓(xùn)項目
輸出:培訓(xùn)記錄
處理說明:根據(jù)員工情況為員工進(jìn)行特定的專業(yè)培訓(xùn)
(4)處理過程名:部門管理
說明:公司增加或者刪除一個部門,或者是部門調(diào)動以及人員調(diào)動等等
輸入:部門情況,部門記錄
輸出:部門記錄
處理說明:根據(jù)上級的調(diào)度,對現(xiàn)在部門的領(lǐng)導(dǎo)人進(jìn)行調(diào)換,或者是增
加或刪除某一部門.
(5)處理過程名:學(xué)歷管理
說明:為員工記錄學(xué)歷信息
輸入:學(xué)歷編號,學(xué)歷,專業(yè)
輸出:學(xué)歷記錄
處理說明:為了方便分派員工的崗位,所以記錄每一個員工的學(xué)歷信息。
4 概念結(jié)構(gòu)(E–R圖)
Ø (1)員工基本信息表:
Ø (2)工作崗位表:
Ø (3)學(xué)歷信息表:
Ø (4)婚姻信息表:
Ø (5)員工表:
Ø (6)部門表:
Ø (7)管理員表:
Ø (8)請假情況表:
Ø (9)員工培訓(xùn)表:
Ø (10)總E—R圖:
5 邏輯設(shè)計(將E/R模型轉(zhuǎn)到關(guān)系模型)
員工基本信息(員工編號,姓名,參加工作時間,職稱,出生年月,部門號)
工作崗位(員工編號,崗位,職務(wù))
學(xué)歷信息(學(xué)歷編號,學(xué)歷,專業(yè),畢業(yè)學(xué)校,畢業(yè)時間)
婚姻信息(身份證號,姓名,有無配偶)
員工表(員工編號,姓名)
部門信息(部門號,部門名稱,部門經(jīng)理)
管理員表(管理員編號,姓名,密碼,權(quán)限)
請假情況表(員工編號,請假具體時段,請假原由)
員工培訓(xùn)(培訓(xùn)編號,培訓(xùn)編號,培訓(xùn)項目,培訓(xùn)時間)
組成(員工編號,部門號)
管理(管理員編號,員工編號)
擁有a(員工編號,學(xué)歷編號,身份證號)
6 物理設(shè)計(基于碼建立索引)
create unique index 員工名單 on 員工表(員工編號 Asc)
create unique index 學(xué)歷信息表 on 學(xué)歷信息表(學(xué)歷編號 Desc)
create unique index 培訓(xùn)表 on 員工培訓(xùn)表(員工編號 Asc)
create unique index 工作崗位名單 on 工作崗位表(員工編號 Asc)
7 用SQL實現(xiàn)(表、關(guān)系圖的建立)
u 員工基本信息
CREATE TABLE 員工基本信息
(員工編號 char(10)foreign key references 工作崗位表PRIMARY KEY,
姓名 varchar (50)NOT NULL,
參加工作時間 char(10)NOT NULL,
職稱 varchar(50),
出生年月 datetime(8),
部門號 char(10)foreign key references 部門信息NOT NULL,
CONSTRAINT 員工編號 check ([員工編號]>0 and [員工編號]< 10000))
u 學(xué)歷信息
CREATE TABLE 學(xué)歷信息
(學(xué)歷編號 char (10)PRIMARY KEY,
學(xué)歷 varchar (50)NOT NULL,
專業(yè) varchar (50)NOT NULL,
畢業(yè)學(xué)校 varchar (50)NOT NULL,
畢業(yè)時間 char (10)NOT NULL,
CONSTRAINT學(xué)歷編號 check([學(xué)歷編號]like '[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9]'))
u 婚姻信息
CREATE TABLE 婚姻信息
(身份證號varchar(20)PRIMARY KEY,
姓名 varchar(30)NOT NULL,
有無配偶varchar(10)NOT NULL,
CONSTRAINT有無配偶CHECK ([有無配偶] = '有' or [有無配偶] = '無'))
u 工作崗位
CREATE TABLE 工作崗位
(員工編號 char(10)PRIMARY KEY,
崗位 varchar (50)NOT NULL,
職務(wù) varchar (50)NOT NULL,
CONSTRAINT 員工編號 check ([員工編號] > 0 and [員工編號] < 10000))
u 部門信息
CREATE TABLE 部門信息
( 部門號 char (10)PRIMARY KEY,
部門名稱 varchar (50)NOT NULL,
部門經(jīng)理 varchar (50)NOT NULL,
CONSTRAINT部門號CHECK ([部門號] > 0 and [部門號] < 50))
u 員工培訓(xùn)
CREATE TABLE 員工培訓(xùn)
( 培訓(xùn)編號 char(10)PRIMARY KEY,
員工編號 char(10) NOT NULL foreign key references 員工表.員工編號,
培訓(xùn)項目 varchar (50)NOT NULL,
培訓(xùn)時間 varchar (50)NOT NULL,
CONSTRAINT 培訓(xùn)編號CHECK ([培訓(xùn)編號] > 0 and [培訓(xùn)編號] < 200))
u 管理員表
CREATE TABLE 管理員表
( 管理員編號 char(10)PRIMARY KEY,
姓名 varchar(50)NOT NULL,
密碼 char(10)NOT NULL,
權(quán)限 varchar (50)NOT NULL,
CONSTRAINT 管理員編號CHECK ([管理員編號] > 0 and [管理員編號] < 50))
u 員工表
CREATE TABLE 員工表
(員工編號 char(10)PRIMARY KEY foreign key references 擁有a.員工編號,
姓名 varchar (50)NOT NULL,
CONSTRAINT 員工編號 check ([員工編號] > 0 and [員工編號] < 10000))
u 請假情況表
CREATE TABLE 請假情況表
( 員工編號 char(10)PRIMARY KEY foreign key references 員工表.員工編號,
請假情況 varchar (20)NOT NULL,
請假原由 varchar (50),
請假時段 char(50),
CONSTRAINT 員工編號 check ([員工編號] > 0 and [員工編號] < 10000))
u 管理表
CREATE TABLE 管理表
(管理員編號char(10)PRIMARY KEY foreign key references 管理員表. 管理員編號,
員工編號 char(10)PRIMARY KEY foreign key references 員工表.員工編號)
u 擁有a表
CREATE TABLE 擁有a表
(員工編號char(10) PRIMARY KEY,
學(xué)歷編號char(10) NOT NULL foreign key references學(xué)歷信息表.學(xué)歷編號,
身份證號varchar (20) NOT NULL foreign key references婚姻信息表.身份證號)
u 總體關(guān)系圖
9 查詢與測試結(jié)果
(1) 查詢所有管理員的學(xué)歷
查詢語句:
select 管理表.管理員編號,學(xué)歷
from 學(xué)歷信息表,擁有a,管理表
where 管理表.管理員編號=擁有a.員工編號 and 學(xué)歷信息表.學(xué)歷編號=擁有a.學(xué)歷編號
(2)查詢身份證號為‘121133198911233002’的員工姓名
查詢語句:
select 姓名
from 員工基本信息
where 員工編號 IN(
select 員工編號
from 擁有a
where 身份證號='121133198911233002')
(3)查詢信管專業(yè)畢業(yè)的員工名單 (姓名,職稱,)
查詢語句:
Select 姓名,職稱
From 員工基本信息
Where 員工編號 IN (select員工編號
From學(xué)歷信息表,擁有a
Where專業(yè)=‘信息管理與信息系統(tǒng)’and學(xué)歷信息表.學(xué)歷編號=擁有a.學(xué)歷編號)
(4)插入一條員工基本信息('00022','李剛','2011','會計','1989-11-03','005')和一條工作崗位('00022','會計員','負(fù)責(zé)工資核算')記錄
查詢語句:
insert
into 工作崗位表
values ('00022','會計員','負(fù)責(zé)工資核算')
insert
into 員工基本信息
values ('00022','李剛','2011','會計','1989-11-03','005')
(5)查詢山西農(nóng)大畢業(yè)的員工表(姓名,崗位,職務(wù))
查詢語句:
select 姓名,崗位,職務(wù)
from 員工表,工作崗位表
where 工作崗位表.員工編號 =員工表.員工編號 and 員工表.員工編號 in
(select 員工編號
from 學(xué)歷信息表,擁有a
where 畢業(yè)學(xué)校='山西農(nóng)業(yè)大學(xué)' And 學(xué)歷信息表.學(xué)歷編號=擁有a.學(xué)歷編號)
(6)查詢員工中姓李的員工并且在統(tǒng)計部工作的員工名單
查詢語句:
select 姓名
from 員工基本信息
where 姓名 like '李%'and 部門號=(select 部門號
from 部門信息
where 部門名稱='統(tǒng)計部')
(7)把員工基本信息表與工作崗位表進(jìn)行等值連接
查詢語句:
select 員工基本信息.*,工作崗位表.*
from 員工基本信息,工作崗位表
where 員工基本信息.員工編號=工作崗位表.員工編號
(8)將員工基本信息表中員工編號為“00022”的員工姓名改為“紫淇”
查詢語句:
update 員工基本信息
set 姓名='紫淇'
where 員工編號='00022'
(9)查詢參加工作時間在2000年后的姓名與職稱組合表
查詢語句:
SELECT 姓名,職稱
from 員工基本信息
where 參加工作時間>2000
(10)查詢除管理員外所有存在請假記錄的員工
查詢語句:
select 員工編號
from 請假情況表
where 請假情況='有'
and
員工編號 not in (select 員工編號
from 管理表
where 管理表.員工編號=管理表.管理員編號)
8 課程總結(jié)
由于在數(shù)據(jù)庫的設(shè)計初期,沒有對人事管理系統(tǒng)進(jìn)行準(zhǔn)確地需求分析,導(dǎo)致后期設(shè)計過程中的數(shù)據(jù)庫的概念設(shè)計階段無法進(jìn)行。因此,通過此次數(shù)據(jù)庫課程設(shè)計使學(xué)生認(rèn)識到了需求分析對于軟件系統(tǒng)設(shè)計的重要性。也認(rèn)識到規(guī)范化的設(shè)計流程對于后期的設(shè)計來說,是十分重要的。前面的設(shè)計是后面的鋪墊,只有對前面的設(shè)計過程進(jìn)行準(zhǔn)確地分析,才能節(jié)省整個系統(tǒng)的開發(fā)時間。最后,通過此次數(shù)據(jù)庫課程設(shè)計使學(xué)生初步理解了簡單數(shù)據(jù)庫的一般開發(fā)流程,以及數(shù)據(jù)流圖和E-R圖等專業(yè)圖形地繪制。
課程設(shè)計是一個對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。通過這次的課程設(shè)計,我們學(xué)到了很多很多的東西,同時不僅鞏固了以前學(xué)過的知識,也學(xué)到了很多在書本上沒有學(xué)到的知識。這次數(shù)據(jù)庫課程設(shè)計經(jīng)歷了從選題、目錄、摘要、前言、系統(tǒng)設(shè)計、需求分析、數(shù)據(jù)字典到E-R圖設(shè)計,再到關(guān)系模型設(shè)計,最后建立數(shù)據(jù)庫。在這其中我們組的每個成員通過查閱相關(guān)書籍和上網(wǎng)查一些相關(guān)資料,分工合作,進(jìn)行了很多次大大小小的擴充和修改,使數(shù)據(jù)結(jié)構(gòu)和內(nèi)容更趨于完善。
通過這次課程設(shè)計,我們收益頗深,感受深刻,雖然我們這次設(shè)計可能做得不夠好,但是為我們以后的數(shù)據(jù)庫設(shè)計打下了很好的基礎(chǔ),在做這次課程設(shè)計的過程中,我們每個人都很努力,最終我們達(dá)成了共識并且順利的完成了這次設(shè)計。
26