数据库技术及应用期末作业
数据库技术及应用期末作业(课程作业)一 . 设计任务、要求及所用软件环境或工具、设计任务:选题一, 工资管理系统设计要求:它的主要任务是对各种工资信息 进行日常的管理,如工资信 删除,迅速准确地完成各种工资信息 的统计计算和汇总,快速打印出报表。软件环境:SQLserver2019具:SQLmanage stduio
数据库设计期末作业
学号: 姓名: 班级:
一 . 设计任务、要求及所用软件环境或工具、
设计任务:选题一, 工资管理系统设计
要求:它的主要任务是对各种工资信息 进行日常的管理,如工资信
删除,迅速准确地完成各种工资信息 的统计计算和汇总,快速打印出报表。
软件环境:SQLserver2019
工具:SQLmanage stduio
二.数据库设计
1)需求分析阶段的数据流图、数据字典
数据字典:
1数据流名称:工资信息[使用文档中的独特引言吸引读者的注意力,或者使用此空间强调要点。要在此页面上的任何位置放置此文本框,只需拖动它即可。]
来源:财务人员
去向:工资
2数据流名称:员工信息
来源:人事管理
去向:员工
3数据流名称:部门信息
来源:人事管理
去向:部门
4数据流名称:查询请求
来源:员工
去向:查询职工工资
5数据流名称:查询结果
来源:查询职工工资
去向:品工
2)数据库概念设计的 ER图(局部ER图 及 全局ER 图)
3)数据库逻辑阶段设计的 各个数据模式
E-R图转换成关系模式如下:
员工(员工编号,姓名,性别,出生年月,部门编号)
F = {员工编号→姓名,员工编号→性别,员工编号→出生日期,员工编号→部门编号}
候选码:员工编号,姓名,最高符合BCFN。
工资(员工编号,基本工资、岗位工资、住房补贴、津贴、工会会费、水电费、住房公积金,养老保险、奖惩、应发金额、应扣金额,实发金额)
F = {员工编号,员工编号→基本工资、员工编号→岗位工资、员工编号→住房补贴、员工编号→津贴、员工编号→工会会费、员工编号→水电费、员工编号→住房公积金,员工编号→养老保险、员工编号→奖惩、员工编号→应发金额、员工编号→应扣金额,员工编号→实发金额}
候选码:员工编号,最高符合BCNF。
部门信息(部门编号、部门名称、部门负责人、部门人数。)
F = {部门编号、部门编号→部门名称、部门编号→部门负责人、部门编号→部门人数。 }
候选码:部门编号,部门名称,最高符合BCNF。
创建数据库:
create table department
(
dno char(10) primary key not null,
dname char(6) not null,
dcharge char(7) not null,
dnumeber int
);
create table woker
(
wno char(15) primary key not null,
wname varchar(15) not null,
sex char(5) not null check(sex='男' or sex='女'),
birth date not null,
dno char(10) not null,
post char(6),
mar char(6),
politic char(6) check(politic in ('党员','团员','群众'))
foreign key (dno) references department(dno)
);
create table wage(
wno char(15) primary key not null,
base_wage float,
post_wage float,
house_wage float,
allowances float,
union_dues float,
utilities float,
house_pro float,
old_ins float,
reward float,
pay_amount float,
deduc_amount float,
paid_amount float,
foreign key(wno) references woker(wno)
)
表的内容的编辑根据自己的需要进行编辑
创建不同的登录对象:财务人员,人事管理人员,员工。
其他同理创建。
5)基础数据的维护
基于查询功能,由各个表的管理员进行维护。
查询:
select *
from woker
where wname = '张三'
select *
from wage
where wno= '11111'
创建视图:浏览工资表,返回当月份各个部门员工的工资信息。
create view de_wage
as select dno 部门编号 ,wage.*
from wage ,woker
where wage.wno =woker.wno
group by dno
6)各类信息的查询统计(至少包括一个存储过程、一个触发器)
创建存储过程(以员工编号为输入参数返回指定员工的基本信息)
create procedure chazhao
as
declare @wno char(15)
begin
select *
from wage
where wno =@wno
end
创建 一个存储 过程统计所有员工在本月的实发工资为输出。
create procedure 总工资
as
declare @total_wage float
begin
select @total_wage= sum(paid_amount)
from wage
end
创建触发器(当在员工表中有部门变动时,部门表中部门人数自动变化)
create trigger 职位调动
on woker
after update ,insert,delete
as
declare @dno char(10) ,@dnumber int
begin
select @dno =dno
from inserted --变动的部门(@dno)
select @dnumber = count(*)
from woker
group by dno
having dno =@dno
---变动之后的部门人数
update department
set dnumeber = @dnumber
where dno =@dno
---更新部门人数
end
更多推荐
所有评论(0)