《企业人事管理系统》数据库设计班级:学号姓名:一.需求分析1.1本课题的研究背景互联网的高速发展,信息化的迅速蔓延,使企业的信息化管理出现了新的方向。
一个现代化的企业想要生存和发展,必须跟上信息化的步伐,用先进的信息化技术来为企业的管理节约成本、制定规划。
而人才作为企业生存和发展的根本,在企业的管理中始终占有着重要的地位。
对企业的人才进行良好的人事管理既有助于企业高层和人事管理人员动态、及时地掌握企业的人事信息,制定人才招聘和发展规划,也有利于企业优化改革,精简机构,最终实现人事管理的信息化建设。
在此形势下,我们开发了此套人事管理系统,可应用于大部分的企事业单位,管理人员可查询员工考勤、薪资、档案等相关信息并可对其进行维护,普通员工[1]可在管理人员授权后进行相应的查询等操作。
1.2国内外研究现状国外专家学者对人事管理系统的研究起步比较早,发达国家的企业非常注重自身人事管理系统的开发。
特别是一些跨国公司,更不惜花费大量的人力和物力来开发相应的人事管理系统,通过建立一个业务流的开发性系统实现真正意义上的人事管理目标,挑选和留住最佳人才,同时不断提高这些人才的工作效益。
例如:苹果公司的企业员工人事管理系统便是一个很好的典范。
我国的信息管理系统是九十年代初开始快速发展的。
经过十余年的发展,我国的数据库管理技术也广泛的应用于各个领域,并且形成了产业化。
但是,我们的工厂、企业对信息管理系统的应用比起世界先进水平还相当落后。
主要表现在:人事管理系统范围使用相对狭窄、人事管理系统功能相对欠缺、稳定性较差、功能相对单一等。
1.3本课题的主要工作人事管理系统是一个面向企业人事部门工作人员,为其提供服务的综合信息管理系统。
企业员工通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。
员工的个人信息等都记录在人事系统里进行管理。
企业下设人事部门,[2]全权处理企业内部一切人事事物。
二、概念设计通过了解:一个企业人事管理系统应该包括:职员信息录入、信息查询、信息修改,信息删除,信息维护等模块。
整个系统模块划分如下图:企业人事信息管理系统身职职人企退份员员事业出登密查信部系录码询息门统模修模管管模块块块改理理模模模块块块 1. 身份登录模块身份登录模块管理员登录职工登录企业的所有员工均需通过密码认证方可进入系统。
职员进入查询界面,管理员进入职员信息更改界面。
2. 职员密码修改模块企业的员工在注册后,登录自己的信息界面,把自己的注册时的默认密码更改为自己的密码。
3. 职员查询模块职员可通过职务和部门来查询有关职员的信息,系统通过职员输入的信息调用数据库中的存储过程,并把结果显示在界面上。
4. 人事信息管理模块人事信息管理模块人人人人事事事事信信信信息息息息查录删更询入除改对于人事管理员和企业职员,都能进行信息的查询,职员的信息包括:职员编号,姓名,性别,身份证号码,职务,注册日期,部门编号,部门名称,工资,奖金,奖惩情况。
公司的管理员可对人事信息进行查询,录入,更改,删除,普通员工只能够对其信息的查询以及对自己的密码进行修改。
5. 企业部门管理模块企业部门管理模块企企企企业业业业部部部部门门门门查录删更询入除改企业的每一名职员都有所对应的部门,有时候,企业会根据自身的情况来对部门进行管理或对其职能做出相应的调整,因而,本系统将部门的企业部门作为一个模块来进行管理,方便日后的操作。
企业部门的信息包括:部门编号,部门名称,负责人,部门简介。
管理员可对其进行查询,录入,删除,更改操作。
6. 退出系统模块企业职员和管理员在进行完一系列操作后,可通过主菜单返回到登录界面,然后点击安全退出,方可退出本系统。
四: E-R图职员编号姓名性别身份证号码职务注册时间密码部门名称职员 n 工资 m 1 所属管理奖惩情况属于部门编号 1 1 1 部门管理员密码名称职员密码负责人用户名部门名称职员编号密码三、逻辑设计逻辑设计就是把E-R图转换成关系模式,并对其进行优化。
3.1 E-R图向关系模型的转换原则:(1)一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键;(2)一个联系转换为一个关系模式,和该联系相连的每个实体型的键及联系的属性都转换为关系的属性。
这个关系的键分为以下三种不同的情况:若联系为1:1,则相连的每个实体型的键均是该关系模式的侯选键。
若联系为1:n,则联系对应的关系模式的键取n端实体型的键。
若联系为m:n,则联系对应的联模式的键为参加联系的诸实体型的键的组合。
在上述经由E-R模型得到关系模式并且得到适当的调整后,我们可以结合在需求表述中数据字典包含的数据项信息,得到数据库的表结构(具体设计各个数据表的表结构,包括表名,表中各列的字段名、数据类型、数据长度和表的主键和外键;还要考虑应该建立哪些索引以及索引的类型)。
需要指出的是,考虑到系统的统一兼顾如对数据库管理员和后续软件开发中对数据库管理以及编程引用的便利,表名和字段名的命名应该由表名的英文含义的词语为主或以其缩写字母构成;同时要为各个表名和字段名作出完整的中文文档说明。
表1:管理员表(manage)字段类型长度值用户名 char 10 不为空密码 Int 10 不为空表2:职员信息表(clerk) 字段类型长度值职员编号(主码) char 10 不为空密码 char 10 不为空姓名 char 10 不为空性别 char 4 不为空身份证号码 char 20 不为空部门名称(外码)char 5 不为空职务 char 10 不为空注册时间 Datetime 10 不为空工资 Longing 6 - 奖惩情况 Char 100 - 表3:企业部门表(dep) 字段类型长度值部门编号char 10 不为空部门名称(主码) char 10 不为空负责人char 10 不为空部门简介 char 500 - 表4:职员密码表(clerkscrect)字段类型长度值职员编号char 10 不为空密码 Int 10 不为空… 四、物理设计数据库的物理设计任务,主要是将逻辑设计映射到存储介质上,利用可用的硬件和软件条件能可靠地、高效地对数据进行物理访问和维护。
存储介质及其存储模式是任何关系数据库的关键组件。
数据库的成功执行通常需要在工程的前期阶段精心设计,其中主要考虑的内容:① 使用哪种类型的磁盘硬件,如RAID(独立磁盘冗余阵列)设备;② 数据在磁盘上如何放置即数据的分配策略;③ 从访问性能的角度采用适当的索引技术和设计具体的索引项;④ 以及基于特定数据库有关的参数配置以使数据库很好地运行。
五、数据库的建立和测试主要内容:/*==============================================================*/ /* DBMS name: Sybase SQL Anywhere 10 */ /* Created on: 2013-6-25 14:07:33 */ /*==============================================================*/ if exists(select 1 from sys.sysforeignkey where role='FK_EMPLOYEE_属于_CLERKSCR') then alter table Employee delete foreign key FK_EMPLOYEE_属于_CLERKSCR end if; if exists(select 1 from sys.sysforeignkey where role='FK_EMPLOYEE_所属_DEPT') then alter table Employee delete foreign key FK_EMPLOYEE_所属_DEPTend if; if exists(select 1 from sys.sysforeignkey where role='FK_EMPLOYEE_管理_MANEGER') then alter table Employee delete foreign key FK_EMPLOYEE_管理_MANEGER end if; if exists(select 1 from sys.sysforeignkey where role='FK_CLERKSCR_属于2_EMPLOYEE') then alter table clerkscrect delete foreign key FK_CLERKSCR_属于2_EMPLOYEE end if; if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='管理_FK' and t.table_name='Employee' ) then drop index Employee.管理_FK end if; if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='所属_FK' and t.table_name='Employee' ) then drop index Employee.所属_FK end if; ifexists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='Employee_PK' and t.table_name='Employee' ) then drop index Employee.Employee_PK end if; if exists( select 1 from sys.systable where table_name='Employee' and table_type in ('BASE', 'GBL TEMP') ) thendrop table Employee end if; if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='Maneger_PK' and t.table_name='Maneger' ) then drop index Maneger.Maneger_PK end if; if exists( select 1 from sys.systable where table_name='Maneger' and table_type in ('BASE', 'GBL TEMP') ) then drop table Maneger end if; if exists( select 1 from sys.sysindex i, sys.systable t where i.table_id=t.table_id and i.index_name='属于2_FK' and t.table_name='clerkscrect' ) then drop index clerkscrect.属于2_FK end if; if exists( select 1 from sys.systable where table_name='clerkscrect' and table_type in ('BASE', 'GBL TEMP') ) then drop table clerkscrect end if; if exists( select 1 from sys.systable where table_name='dept' and table_type in ('BASE', 'GBL TEMP') ) then drop table dept end if;/*==============================================================*/ /* Table: Employee */ /*==============================================================*/ create table Employee ( EmId char(10) not null,Users char(10), Pswd char(10), Name char(10),sex char(4), ID char(20), Job char(10), RegerTime char(10), Dept char(410), Salary char(10), Publish char(10), constraint PK_EMPLOYEE primary key (EmId) );/*==============================================================*/ /* Index: Employee_PK *//*==============================================================*/ create unique index Employee_PK on Employee ( EmId ASC );/*==============================================================*/ /* Index: 所属_FK *//*==============================================================*/ create index 所属_FK on Employee ( Users ASC );/*==============================================================*/ /* Index: 管理_FK *//*==============================================================*/ create index 管理_FK on Employee ( Users ASC );/*==============================================================*/ /* Table: Maneger *//*==============================================================*/create table Maneger ( Users char(10) not null, Psdchar(10), constraint PK_MANEGER primary key (Users) );/*==============================================================*/ /* Index: Maneger_PK *//*==============================================================*/ create unique index Maneger_PK on Maneger ( Users ASC );/*==============================================================*/ /* Table: clerkscrect *//*==============================================================*/ create table clerkscrect ( EmId char(10), EmpID char(10), EmoPsd char(10) );/*==============================================================*/ /* Index: 属于2_FK *//*==============================================================*/ create index 属于2_FK on clerkscrect ( EmId ASC );/*==============================================================*/ /* Table: dept *//*==============================================================*/ create table dept ( DeptId char(10), DeptName char(10), "persons responsible" char(10), DeptProject char(500) );alter table Employee add constraint FK_EMPLOYEE_属于_CLERKSCR foreignkey (EmId)references clerkscrect (EmpID) on update restrict on deleterestrict; alter table Employee add constraint FK_EMPLOYEE_所属_DEPT foreign key (Dept) references dept (DeptName) on update restrict on delete restrict; alter table Employee add constraint FK_EMPLOYEE_管理_MANEGER foreign key (Users) references Maneger (Users) on update restrict on delete restrict; alter table clerkscrect add constraint FK_CLERKSCR_属于2_EMPLOYEE foreign key (EmId) references Employee (EmId) on update restrict on delete restrict; 六、数据库运行和维护查询要求: (1)查询某门课程的选课信息 (2)查询某个学生的选课信息 (3)查询某个班级的选课信息(4)学生查询自己的课程计划(5)统计某个某个班级的学分信息……。