数 据 库 原 理课设.docx

上传人:b****5 文档编号:7507836 上传时间:2023-05-11 格式:DOCX 页数:14 大小:207.01KB
下载 相关 举报
数 据 库 原 理课设.docx_第1页
第1页 / 共14页
数 据 库 原 理课设.docx_第2页
第2页 / 共14页
数 据 库 原 理课设.docx_第3页
第3页 / 共14页
数 据 库 原 理课设.docx_第4页
第4页 / 共14页
数 据 库 原 理课设.docx_第5页
第5页 / 共14页
数 据 库 原 理课设.docx_第6页
第6页 / 共14页
数 据 库 原 理课设.docx_第7页
第7页 / 共14页
数 据 库 原 理课设.docx_第8页
第8页 / 共14页
数 据 库 原 理课设.docx_第9页
第9页 / 共14页
数 据 库 原 理课设.docx_第10页
第10页 / 共14页
数 据 库 原 理课设.docx_第11页
第11页 / 共14页
数 据 库 原 理课设.docx_第12页
第12页 / 共14页
数 据 库 原 理课设.docx_第13页
第13页 / 共14页
数 据 库 原 理课设.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数 据 库 原 理课设.docx

《数 据 库 原 理课设.docx》由会员分享,可在线阅读,更多相关《数 据 库 原 理课设.docx(14页珍藏版)》请在冰点文库上搜索。

数 据 库 原 理课设.docx

数据库原理课设

数据库原理

课程设计任务书

班级:

计软11—2

学号:

1106120203

姓名:

杜素玉

成绩:

 

电子与信息工程学院

计算机科学系

7数据库原理课程设计报告

7.1设计题目名称

学校人力资源管理系统

7.2系统概述

系统功能:

实现学校部门信息和教职工信息管理;

􀀂实现教师的工资管理;

􀀂实现教师的奖惩信息管理;

􀀂创建存储过程根据提交的部门编号,查看该部门的部长;

创建存储过程根据提交员工编号和工资发放时间,查看该员工的薪资信息

创建存储过程根据员工提交的员工编号和奖罚时间,查看该员工的奖罚信息

􀀂创建触发器当增加、删除教职工和修改教职工部门信息时自动修改相应部门的职工人数;􀍅

􀀂建立数据库相关表之间的参照完整性约束。

7.3系统功能模块设计

说明:

学校人力资源管理系统包含部门管理、员工管理、工资管理、奖惩管理。

其中,部门管理包含部门名称、人数等;员工管理包含员工学历、家庭关系等;工资管理包含基本工资、实发工资等;奖惩管理包含编号、原因等。

7.4数据库概念结构设计

在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。

概念结构的主要特点是:

1.能真实、充分地反应现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;

2.易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;

3.易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;

4.易于向关系、网状、层次等各种数据模型转换。

概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。

描述概念模型的有力工具是E-R模型。

E-R图:

7.5数据库逻辑结构设计

逻辑结构设计:

下面将E-R图转换为关系模型:

员工信息(员工编号,员工姓名,年龄,性别,出生年月,婚姻状态,政治面貌,学历,部门编号,职务,联系方式,备注)主键:

员工编号;外码:

部门编号;

部门信息(部门编号,部门名称,部门人数)主键:

部门编号;

奖惩信息(奖惩编号,员工编号,奖罚时间,奖罚原因,奖罚地点,备注)主键:

奖惩编号,外码:

员工编号;

薪资信息(薪资编号,员工编号,基本工资,福利,奖金,计算方法,实发工资,发放日期),主键:

薪资编号;外码:

员工编号。

员工工资(薪资编号,员工编号)主键:

员工编号,薪资编号

员工部门(员工编号,部门编号)主键:

员工编号,薪资编号

员工惩罚(员工编号,奖惩编号)主键:

员工编号,奖惩编号

7.6数据库物理设计

员工信息表

字段名

字段类型

小数位数

是否主键

是否为空

是否外键

备注

列名

数据类型

员工编号

int

员工姓名

varchar

年龄

int

性别

varchar

出生年月

Datetime

婚姻状态

varchar

政治面貌

varchar

学历

varchar

部门编号

int

职务

varchar

联系方式

varchar

备注

varchar

部门信息表

字段名

字段类型

小数位数

是否主键

是否为空

是否外键

备注

部门编号

int

部门名称

varchar

部门人数

int

薪资信息表

字段名

字段类型

小数位数

是否主键

是否为空

是否外键

备注

薪资编号

int

员工编号

int

基本工资

int

福利

int

奖金

int

计算方法

int

实发工资

int

发放日期

int

奖惩信息表

字段名

字段类型

小数位数

是否主键

是否为空

是否外键

备注

奖惩编号

Int

员工编号

Int

奖罚原因

Varchar

奖罚地点

Varchar

奖罚时间

Datetime

备注

varchar

1.视图

视图是一个虚拟表,其内容由查询定义。

同真实的表一样,视图包含一系列带有名称的列和行数据。

但是,视图并不在数据库中以存储的数据值集形式存在。

行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。

定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。

分布式查询也可用于定义使用多个异类源数据的视图。

2.存储过程

存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

存储过程的优点:

  

(1).存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

  

(2).当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

 (3).存储过程可以重复使用,可减少数据库开发人员的工作量

  (4).安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

3.触发器

触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。

触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。

当对某一表进行诸如Update、Insert、Delete这些操作时,SQLServer就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。

触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。

除此之外,触发器还有其它许多不同的功能:

  

(1)强化约束(Enforcerestriction)

  触发器能够实现比CHECK语句更为复杂的约束。

  

(2)跟踪变化Auditingchanges

  触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

  (3)级联运行(Cascadedoperation)。

  触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。

例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。

(4)存储过程的调用(Storedprocedureinvocation)。

在物理结构中,数据的基本存取单位是存储记录。

有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。

存储记录就包括记录的组成,数据项的类型和长度等。

 

7.7程序运行环境和开发环境

运行环境:

操作系统:

windows7

运行软件:

SQL

开发环境:

操作系统:

windows7

开发软件:

SQL

7.8主要模块程序流程图

7.9主要功能实现的程序段

1、创建高校教职工管理数据库:

CREATEDATABASE高校教职工管理

ON

(NAME=高校教职工管理DAT,

FILENAME='D:

\SQL\高校教职工管理DAT.MDF',

SIZE=5,

MAXSIZE=20,

FILEGROWTH=2

LOGON

(NAME=高校教职工管理LOG,

FILENAME='D:

\SQL\高校教职工管理LOG.LDF',

SIZE=5,

MAXSIZE=20,

FILEGROWTH=2

--------------------------------------------------------

2、创建表

CREATETABLE部门信息表

部门编号INTPRIMARYKEY,

部门名称VARCHAR(20)UNIQUENOTNULL,

部门人数INTCHECK(部门人数>=0)NOTNULL,

-------------------------------------------

CREATETABLE员工信息表

员工编号INTNOTNULLPRIMARYKEY,

员工姓名VARCHAR(20)NOTNULL,

年龄INTCHECK(年龄>=1)NOTNULL,

性别VARCHAR

(2)CHECK(性别IN('男','女'))NOTNULL,

出生年月DatetimeNOTNULL,

婚姻状态VARCHAR(4)CHECK(婚姻状态IN('已婚','未婚'))NOTNULL,

政治面貌VARCHAR(20)CHECK(政治面貌IN('清白','团员','党员'))NOTNULL,

学历VARCHAR(20)NOTNULL,

部门编号INTNOTNULL,

职务VARCHAR(20)NOTNULL,

联系方式VARCHAR(11)UNIQUENOTNULL,

备注VARCHAR(500),

FOREIGNKEY(部门编号)REFERENCES部门信息表(部门编号)

---------------------------------------------------------

CREATETABLE薪资信息表

薪资编号INTPRIMARYKEY,

员工编号INTNOTNULL,

基本工资INTCHECK(基本工资>=0)NOTNULL,

福利INTCHECK(福利>=0)NOTNULL,

奖金INTCHECK(奖金>=0)NOTNULL,

计算方法VARCHAR(50)NOTNULL,

实发工资INTCHECK(实发工资>=0),

发放日期DatetimeNOTNULL,

FOREIGNKEY(员工编号)REFERENCES员工信息表(员工编号)

----------------------------------------------------------

CREATETABLE奖惩信息表

奖惩编号INTPRIMARYKEY,

员工编号INTNOTNULL,

奖罚时间DatetimeNOTNULL,

奖罚原因VARCHAR(100)NOTNULL,

奖罚地点VARCHAR(20)NOTNULL,

备注VARCHAR(500),

FOREIGNKEY(员工编号)REFERENCES员工信息表(员工编号)

---------------------------------------------------------------

3、创建视图:

--视图员工基本信息:

CREATEVIEW员工基本信息(员工姓名,部门名称,职务,联系方式,薪资)

ASSELECT员工姓名,部门名称,职务,联系方式,实发工资

FROM员工信息表,部门信息表,薪资信息表

WHERE员工信息表.部门编号=部门信息表.部门编号

AND员工信息表.员工编号=薪资信息表.员工编号

-----------------------------------------------------

--视图:

各部门部长信息

CREATEVIEW部门部长信息(部门编号,部门名称,员工编号,员工名字)

ASSELECT部门信息表.部门编号,部门名称,员工编号,员工姓名

FROM员工信息表,部门信息表

WHERE员工信息表.部门编号=部门信息表.部门编号

AND员工信息表.职务='部长'

--------------------------------------------------------------

4、创建存储过程

--存储过程LOOKWAGE:

根据员工提交的员工编号和工资发放时间,查看该员工的薪资信息,

--包括员工编号,姓名,实发薪资,和发放日期。

CREATEPROCEDURELOOKWAGE

@IDINT,@TIMEDatetime

AS

SELECT员工信息表.员工编号,员工姓名,实发工资,发放日期

FROM员工信息表,薪资信息表

WHERE员工信息表.员工编号=薪资信息表.员工编号

AND员工信息表.员工编号=@IDAND发放日期=@TIME

--存储过程LOOKREWARDS:

根据员工提交的员工编号和奖罚时间,查看该员工的奖罚信息,

--包括员工编号,姓名,奖罚原因,奖罚时间。

CREATEPROCEDURELOOKREWARDS

@IDINT,@TIMEDatetime

AS

SELECT员工信息表.员工编号,员工姓名,奖罚原因,奖罚时间

FROM员工信息表,奖罚信息表

WHERE员工信息表.员工编号=奖罚信息表.员工编号

AND员工信息表.员工编号=@IDAND发放日期=@TIME

---------------------------------------------------------------------

--存储过程Find_Minister:

根据提交的部门编号,查看该部门的部长

CREATEPROCEDUREFind_Minister

@IDINT

AS

SELECT部门信息表.部门编号,部门信息表.部门名称,员工信息表.员工编号,员工姓名

FROM员工信息表,部门信息表

WHERE员工信息表.部门编号=部门信息表.部门编号

AND员工信息表.职务='部长'

-------------------------------------------------------------------

--5、创建触发器

--触发器workerid:

要求员工信息表中的员工编号被修改时,薪资信息表

--奖惩信息表中的员工编号也被修改。

CREATETRIGGERWORKERIDON员工信息表

FORUPDATE

AS

BEGIN

IF(UPDATE(员工编号))

BEGIN

UPDATE薪资信息表

SET薪资信息表.员工编号=(SELECT员工编号FROMinserted)

WHERE薪资信息表.员工编号=(SELECT员工编号FROMdeleted)

UPDATE奖惩信息表

SET奖惩信息表.员工编号=(SELECT员工编号FROMinserted)

WHERE奖惩信息表.员工编号=(SELECT员工编号FROMdeleted)

END

END

------------------------------------------------------------------

--触发器CHECK_EXIST:

--向员工信息表插入一条记录时,检查该记录的部门信息在部门信息表

--是否存在,若不存在则不允许插入。

CREATETRIGGERCHECK_EXIST

ON员工信息表

FORINSERT

AS

IFEXISTS(SELECT*FROMinserteda

WHEREa.部门编号NOTIN(SELECT部门信息表.部门编号FROM部门信息表))

BEGIN

RAISERROR('该部门不存在!

',16,1)

ROLLBACKTRANSACTION--撤销刚才的操作,恢复到原来的状态

END

---------------------------------------------------------------------

--触发器COUNT_STAFF

--向员工信息表插入一条记录时,该员工所在的部门人数加.

CREATETRIGGERCOUNT_STAFF

ON员工信息表

AFTERINSERT

AS

BEGIN

UPDATE部门信息表

SET部门人数=部门人数+1

WHERE部门编号IN(SELECT部门编号FROMinserted)

END

------------------------------------------------------------

--触发器departid:

要求部门信息中的部门编号被修改时,员工信息表中员工

--所属部门编号也被修改。

CREATETRIGGERdepartidON部门信息表

FORUPDATE

AS

BEGIN

IF(UPDATE(部门编号))

UPDATE员工信息表

SET员工信息表.部门编号=(SELECT部门编号FROMinserted)

WHERE员工信息表.部门编号=(SELECT部门编号FROMinserted)

END

---------------------------------------------------------------

--触发器CHECK_DELETE:

删除员工记录时,该员工所在部门人数减.

CREATETRIGGERCHECK_DELETE

ON员工信息表

FORDELETE

AS

BEGIN

UPDATE部门信息表

SET部门人数=部门人数-1

WHERE部门编号IN(SELECT部门编号FROMinserted)

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2