东方学院实验(实训)报告项目名称工资管理系统数据库分析与设计所属课程名称数据库原理及应用项目类型设计、综合型.实验(实训)日期—班级 12信息2班,金融信息学号 03 05 1022 25 2739 43姓名黄德灿方骏涛林津津郑逸群孙鲁霖张笑戴林洁,陈怡文(一、需求分析1.信息要求工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。
手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴,或者由于计算机的疏忽,出现工资发放错误的现象。
同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。
正是工资管理的这种重复性、规律性、时间性,使得工资管理计算机化成为可能。
计算机进行工资发放工作,不仅能够保证工资核算正确无误、快速输出,而且还可以利用工资数据库对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理。
,本例按照一般企业都采用的工资计算公式,即根据员工的职务工种来确定基本工资,根据出工情况来扣除缺勤费,根据加班情况发放津贴来生成一个员工的当月工资。
2.功能要求1、员工档案1)对员工进行统一编号,将每一位员工的部门信息、职称信息等保存在员工档案记录中。
2)对新聘用的员工,将其信息加入到员工档案记录中;对于解聘的员工,将其信息从员工档案记录中删除。
3)当员工的信息发生变动时,修改员工档案记录中相应的属性。
2、员工考勤管理1)登记员工本月因迟到、早退、旷工扣减的工资3、*4、员工加班管理1)登记员工本月加班获得的加班薪酬5、员工工资计算及管理1)根据各员工加入公司时间不同,定时对员工工资进行计算。
2)结合员工基本工资,扣除工资及加班情况,对工资进行结算。
6、管理1)员工可以登录系统查询自己的扣除工资、加班情况、本月工资及工资发放时间,也可以更改自己的登录密码。
2)管理员可以查询和管理所有信息,可以更改自己的登录密码。
3.^4.安全性与完整性要求安全与保密要求:此系统可以分为用户和管理员,用户可以浏览自己的考勤加班情况、月工资金额及发放时间,但不能修改自己的信息,凡要修改都需通过管理员去修改。
管理员主要管理系统的各种信息。
二、数据库结构设计1.概念结构设计根据系统需求分析,可以得出工资管理系统数据库的概念模型(信息模型),用E-R图表示的工资管理系统的概念模型。
最后,对设计出的数据模型进行规范化处理,使数据模型满足第三范式。
1、员工实体图图1. 员工实体图\2、管理员实体图图2. 管理员实体图3、部门实体图图3. 部门实体图4、`5、职称实体图图4.职称实体图6、加班记录实体图、图5.加班实体图7、 考勤记录实体图图6考勤实体图'8、 工资记录实体图,图7.工资实体图&全E-R图:图8.实体联系图2.逻辑结构设计将管理系统的E-R图转换为关系数据库的数据模型,其关系模式为:1);2)员工(员工编号,姓名,年龄,性别,所在部门编号,职称编号,加入公司时间,发薪时间,登录密码)员工编号为主码,所在部门编号、职称编号为外码3)管理员(管理员编号,姓名,密码)管理员为主码4)部门(部门编号,部门名称,经理人姓名)部门编号为主码5)职称(职称编号,职称名,基本工资)职称编号为主码6)%7)加班记录(员工编号,年份,月份,加班薪酬)员工编号为主码,加班时长、加班薪酬为外码8)考勤扣除工资(员工编号,年份,月份,扣除工资)员工编号、考勤日期为主码,考勤类型、扣除工资为外码9)工资记录(员工编号,基本工资,扣除工资,加班薪酬,总工资,年份,年月)工资编号为主码,员工编号、发薪日期为外码。
几范式3.数据库结构的详细设计员工表数据类型描述备注:列名Varchar(20)姓名不为空}ygnameChar(2)性别“男”或“女”~ygsexbmid Char(3)所在部门编号不为空,外码Char(3)职称编号不为空,外码;zcidjrdate date加入公司时间不为空date发薪日期不为空—fxdate(管理员列名数据类型描述备注glyname Varchar(20)管理员名不为空部门表列名数据类型描述备注bmname Varchar(20)部门名称不为空职称表列名数据类型备注描述不为空zcname Varchar(20)职称名加班记录数据类型描述备注/列名int加班年份主键:jbyearjbmonth int加班月份主键money加班薪酬"jbxc考勤扣除工资列名数据类型%备注描述kqdate int!主键考勤年月kqmonth int考勤月份主键kcgz money、扣除工资工资记录列名数据类型描述备注zcjbgz money基本工资不为空,外码money扣除工资《kcgzjbxc money加班薪酬money总工资不为空>zgz主码year int年份三、物理设计1.数据库物理设计原理对员工表在属性列ygid(员工编号)上建立索引,—对部门表在属性列bmname(部门名称)和ygname(经理人姓名)上建立索引,对职称表在属性列zcname(职称名)上建立索引,对加班记录在属性列ygid(员工编号)和jbyear(加班年份)和jbmonth(加班月份)上建立索引,对考勤扣除工资在属性列ygid(员工编号)和kqyear(考勤年份)和kqmonth(考勤月份)上建立索引,对工资表在属性列ygid(员工编号)上建立索引,2.%3.数据库的建立3.1表的简历create table员工表(ygid char(8)primarykey,ygname varchar(20)notnull,ygage int,ygsex char(2)check (ygsex in('男','女')),<bmid char(3)notnull,zcid char(3)notnull,jrdate date notnull,fxdate date notnull,ygmm char(20)notnull,foreignkey (bmid)references部门表(bmid), foreignkey (zcid)references职称表(zcid),])create table管理员(glyid char(8)primarykey,----------管理员编号glyname varchar(20)notnull,-----------管理员姓名mm char(20)notnull,----------密码)-create table部门表(bmid char(3)primarykey,bmname varchar(20)notnull,ygname char(20)notnull,)~create table职称表(zcid char(3)primarykey,zcname varchar(20)notnull,zcjbgz money notnull,))----------员工编号----------员工姓名----------年龄----------性别----------部门编号·----------职称编号----------加入公司日期----------发薪日期----------部门编号----------部门名----------经理人姓名----------职称编号----------职称名----------基本工资create table加班记录(ygid char(8),----------员工编号jbyear int,----------加班年份jbmonth int,----------加班月份jbxc money,----------加班薪酬foreignkey (ygid)references员工表(ygid), (primarykey(ygid,jbyear,jbmonth))create table考勤扣除工资'(ygid char(8),kqyear int,kqmonth int,kcgz money,foreignkey (ygid)references员工表(ygid), primarykey(ygid,kqyear,kqmonth),)}create table工资记录(ygid char(8),zcjbgz money notnull,kcgz money,jbxc money,zgz money notnull,year int,#month int,foreignkey (ygid)references员工表(ygid), primarykey(ygid,year,month),)3.2索引createindex员工_索引on员工表(ygid);;createindex部门_索引on部门表(bmname,ygname);----------员工编号----------考勤日期----------考勤类型----------扣除工资----------员工编号----------基本工资----------扣除工资----------加班薪酬----------总工资----------发薪年份*createindex职称_索引on职称表(zcname);createindex加班记录_索引on加班记录(ygid,jbyear,jbmonth);createindex扣资_索引on考勤扣除工资(ygid,kqyear,kqmonth);createindex工资_索引on工资记录(ygid);3.3触发器1)考勤扣除工资表中增加一条本月员工扣除资金,则工资记录中扣除工资相应改变create trigger工资记录_kcgzon考勤扣除工资after insertasupdate工资记录set kcgz=from工资记录,insertedwhere工资记录.ygid=and工资记录.year=and工资记录.month=2)加班记录表中增加一条本月员工加班薪酬,则工资记录中加班薪酬相应改变create trigger工资记录_jbxcon加班记录after insertasupdate工资记录set jbxc=from工资记录,insertedwhere工资记录.ygid=and工资记录.year=and工资记录.month=3)当工资记录中更新本月员工加班薪酬或扣除工资,则工资记录中总工资相应改变create trigger工资记录_zgzon工资记录after updateasif(UPDATE(kcgz)or UPDATE(jbxc))beginupdate工资记录set zgz=zcjbgz+jbxc-kcgzfrom工资记录end4.数据库的运行和维护4.1运行需求1、硬件接口1)服务器端:PIII400主频、256M内存、10G硬盘、10/100M网卡以上配置2)客户端:P166主频、32M内存、2G硬盘、10/100M网卡以上配置3)一台路由器4)远程拨入设备2、软件接口1)MicroSoft Windows NT Server /Windows 2003/ Windows xp/ Windows 20072)SQLserver2005数据库3)MicroSoft Office 2000/2003/20073、系统维护设备的硬件故障可能造成本软件不能运行或不能正常进行输入、输出等后果,系统的资源不足及网络传输通道阻塞可能造成本软件不能正常运行,并有可能造成机器“死机”,上述故障的处理由用户自行解决。