数据库设计期末作业

学号:         姓名:        班级:

. 设计任务、要求及所用软件环境或工具、

设计任务:选题一, 工资管理系统设计

要求:它的主要任务是对各种工资信息 进行日常的管理,如工资信              

删除,迅速准确地完成各种工资信息 的统计计算和汇总,快速打印出报表。

软件环境: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)
)

06fd3f1175c24f67acdb12daaa646aef.jpeg

表的内容的编辑根据自己的需要进行编辑

4)数据库安全性设计(设置不同权限的用户方案)

   创建不同的登录对象:财务人员,人事管理人员,员工。

 758d6e2017004dd5b777c40d1287c2d0.jpeg

02564fd2c4ed4c27bccd63995b646fb7.jpeg

 其他同理创建。

 125ee36924094506bd2000d9baa43e21.jpeg

5)基础数据的维护

  基于查询功能,由各个表的管理员进行维护。

  查询:

select * 
from woker 
where wname = '张三'

7dfbfc50c1e04fd8b2bddabc38b804d2.jpeg

select *
from wage
where wno= '11111'

 22b8500dda6f4a8e9b1e2803d112f872.jpeg

 创建视图:浏览工资表,返回当月份各个部门员工的工资信息。

create view de_wage
as select dno 部门编号 ,wage.*
from wage ,woker
where wage.wno =woker.wno
group by dno

c4c3d008db714d9582a47992eee7f84c.jpeg

6)各类信息的查询统计(至少包括一个存储过程、一个触发器)

  创建存储过程(以员工编号为输入参数返回指定员工的基本信息)

create procedure chazhao
as 
declare @wno char(15)
begin
select * 
from wage
where wno =@wno 
end

 d25d8efb1f164225aea64a5602f264e0.jpeg

 创建 一个存储 过程统计所有员工在本月的实发工资为输出。

create procedure 总工资
as 
declare @total_wage float
begin
select @total_wage= sum(paid_amount)
from wage
end

 bc943738f5694869a5287a0d3738712d.jpeg

创建触发器(当在员工表中有部门变动时,部门表中部门人数自动变化)

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

101c746fe9554e2a87663a9feb42d619.jpeg

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐