人事信息管理系统后台数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库管理系统》
课程设计报告
题目:人事信息管理系统的后台数据库设计院(系):信息科学与工程学院
专业班级:计算机科学与技术****班
学生姓名:******
学号:***********
指导教师:陈颉
20 13 年 1 月 7 日至20 13 年 1 月 18 日
华中科技大学武昌分校制
数据库管理系统课程设计任务书
目录
1.需求分析 (1)
1.1系统功能的基本要求 (1)
1.2系统需求分析 (1)
1.3 数据字典 (2)
1.4 数据流图 (3)
2.概念结构设计 (4)
2.1 局部E-R图 (4)
2.2 全局E-R图 (6)
3.逻辑结构设计 (7)
3.1 E-R图向关系模式转换的原则 (7)
3.2 根据E-R图转换关系模式 (8)
3.3 关系模式的优化 (8)
4.物理结构设计 (9)
4.1数据库文件的建立 (9)
4.2数据表的建立 (9)
4.3视图的建立 (11)
4.4索引的建立 (11)
4.5存储过程的建立 (12)
4.6触发器的建立 (12)
4.6约束的建立 (12)
5.数据库的物理实现 (13)
5.1数据库的建立 (13)
5.2数据表的建立 (13)
5.3视图的建立 (16)
5.4索引的建立 (22)
5.5存储过程的建立 (27)
5.6触发器的建立 (29)
5.7约束的建立 (30)
6.系统后台功能测试 (34)
7.总结 (37)
1.需求分析
开发数据库系统的第一步是进行需求分析,需求分析的好坏直接决定者系统能否真正满足用户的需要。
需求分析阶段位于软件开发的前期,它的基本任务是准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。
1.1系统功能的基本要求:
(1)管理者进入系统后要能够清晰地看到企业的机构组织形式,并能够很方便地进入到各个管理功能模块中。
管理者能够根据企业的实际来实时地改变系统中机构组织,主要的改变包括:当有新部门成立时,要将新部门加入到系统中;当有部门发生变更时,如更名,上级部门改变了等,要将变更信息在系统中及时更新;
(2)员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等。
(3)员工各种信息的修改和删除。
修改的范围有:人员的基本信息;将人员从一个部门下移到另一个部门下。
对于转出、辞职、辞退、退休员工信息的删除;
(4)按照一定的条件,查询、统计符合条件的员工信息;至少应该包括每个员工详细信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,至少应该包括按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息;
1.2系统需求分析
1.2.1系统功能流程图
1.2.2系统主要功能模块分析
(1)基本信息模块。
主要包括企业员工的基本信息,如姓名、性别、学历、婚姻状况、联系方式等。
职工登录后可以查询个人信息;管理员可以负责维护职工基本信息和职工流动信息。
(2)员工工作信息模块。
主要显示员工在公司的情况。
(3)部门信息模块。
主要记录企业的组织机构信息。
(4)考勤信息模块。
主要包含员工上下班的出勤情况,如迟到、休假等。
(5)工资信息模块。
主要包括员工的工资信息。
(6)查询统计模块。
主要为实现上述信息的查询和统计,并能够生成相关报表文件。
1.3数据字典
数据字典的用途:是关于数据库中数据的描述;在需求分析阶段建立,是下一步进行概念设计的基础
数据字典的内容:数据项(数据的最小单位)、数据结构(若干数据项有意义的集合)、数据流(表示某一处理过程的输入或输出)、数据存储(处理过程中存取的数据)、处理过程(该过程的功能)等
1.3.1数据项
(1)员工基本情况。
包括的数据项有员工编号,姓名,性别,年龄,名族,入职时间,所属部门,联系电话,身份证号,基本工资。
(2)员工工作信息。
包括的数据项有员工编号、所属部门编号、职称、工龄。
(3)部门信息。
包括的数据项有部门编号、部门名称、部门电话、部门经理。
(4)员工考勤信息。
包括的数据项有员工编号、缺勤、迟到、早退。
(5)员工工资信息。
包括的数据项有员工编号,姓名,底薪,补贴,奖金,加班,代扣养老金,代扣医疗保险,代扣住房公积金,所得税,房贴,房租,实发工资。
1.3.2 数据结构
例如说,数据结构名:员工
含义说明:是人事信息管理系统的主体数据结构,定义了一个员工的有关信息。
组成:员工编号、性别、姓名、年龄、民族、身份证号、入职时间、部门编号、联系电话、基本工资。
1.3.3数据流
例如说,数据流名:变更员工
数据流来源:员工编号
数据流去向:员工信息
说明:变动人员的有关信息
1.3.4数据存储
例如说,数据存储名:员工信息表单
流入数据流:来源员工
流出数据流:去向
存取方式:随机存取
说明:记录员工信息的基本情况
1.3.5存储结构
例如工资信息中
处理过程名:计算工资
输入数据流:员工,出勤信息
输出数据流:工资信息表单
说明:计算公司所有员工的工资
处理:在每个月的最后一天计算出每个员工的工资。
1.4总数据流图
2.概念结构设计2.1局部E-R图
2.1.1员工基本信息E-R图
2.1.2员工工作信息E-R图
2.1.3部门信息E-R图
2.1.4工资信息E-R图
2.1.5考勤信息E-R图
2.1.6员工调动信息E-R图
2.2全局E-R图
逻辑结构设计的任务是把概念结构设计阶段设计完毕的基本E—R图转化为与选用的具体机器上的DBMS产品所支持的数据模型相符的逻辑结构(包括数据库模式和外模式)。
这些模式在功能性、完整性和一致性约束及数据库的可扩充性等方面应满足用户的各种要求。
E—R图型关系模型的转化要解决的问题是如何将实体和实体间的关系转化为关系模式,如何确定这些关系模式的属性和代码。
3.1 E-R图向关系模式转换的原则
(1)一个实体型转换为一个关系模式。
实体的属性就是关系的属性。
实体的码就是关系的码。
(2)一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有三种情况:
若联系为1:1,则每个实体的码均是该关系的后选码。
若联系为1:n,则关系的码为n端实体的码。
若联系为m:n,则关系的码为诸实体码的组合。
①联系为1:1
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,l 每个实体的码均是该关系的候选码。
如果与某一端对应的关系模式合并,则需要在该关系模式的属②联系为1:n
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
如果与n端对应的关系模式合并,则在n端实体对应模式中加入1端实体所对应关系模式的码,以及联系本身的属性。
而关系的码为n端实体的码。
③联系为m:n
一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
而关系的码为各实体码的组合。
例如在我们的例子中,"选修"联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码:选修(学号,课程号,成绩)三个或三个以上实体间的一个多元联系转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
三个或三个以上实体间的一个多元联系转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
而关系的码为各实体码的组合。
(3)同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。
(4)具有相同码的关系模式可合并。
为了减少系统中的关系个数,如果两个关系模式具有相同的主码,可以考虑将他们合并为一个关系模式。
合并方法是将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。
3.2根据E-R图转换关系模式
一个实体型转换为一个关系模式。
实体的属性就是关系的属性。
实体的码就是关系的码。
例如在我们的例子中,员工基本信息实体可以转换为如下关系模式:员工基本信息(工号,姓名,性别,年龄,民族,入职时间,所属部门,联系电话,身份证号,基本工资)同样,员工工作信息、部门信息等都分别转换为一个关系模式:员工的工作信息(工号,所属部门编号,职称,工龄)
部门(部门编号,部门名称,部门经理,部门电话)
工资(工号,实上班天数,实发工资,扣款)
考勤(工号,缺勤,迟到,早退,日期)
员工调动信息(工号,姓名,原部门编号,新部门编号,调离时间,调入时间)3.3关系模式优化
按照上述4条原则,学生管理子系统中的5个实体和联系可以转换为下列关系模型:
将员工工作信息和工资信息具有相同码,合并为员工工作信息(工号,所属部门编号,职称,工龄,实上班天数,实发工资,扣款)
由上述优化得到最后满足第三范式的关系模式为:
员工基本信息(工号,姓名,性别,年龄,民族,入职时间,所属部门,联系电话,身份证号,基本工资)
员工工作信息(工号,所属部门编号,职称,工龄,实上班天数,实发工资,扣款)
部门(部门编号,部门名称,部门经理,部门电话)
考勤(工号,缺勤,迟到,早退,日期)
员工调动信息(工号,姓名,原部门编号,新部门编号,调离时间,调入时间)
4.物理结构设计
4.1数据库文件的建立
本数据库的文件是由一个数据文件、一个次要文件和一个事务日志文件组成。
数据文件包括数据库的初始信息,记录数据库还拥有哪些文件,并且用于存储数据记录。
次要文件通过在不同的物理磁盘上创建次要数据文件并将数据存储其中,可将数据横跨存储在多块物理磁盘上。
而事务日志文件包括用来恢复数据库的日志信息,记录数据库更新情况的文件。
4.2数据表的建立
根据课程设计任务书的要求,经需求分析,需用到五个表,分别为员工信息表,员工工作信息表,部门信息表,考勤信息表,工资信息表,员工调动信息表。
详细情况如下:
4.2.1员工基本信息表
表4-1 员工信息表
4.2.2员工工作信息表
表4-2 员工工作信息表
4.2.3部门信息表
表4-3 部门信息表
4.2.4考勤信息表
表4-4 考勤信息表
4.2.5工资信息表
表4-5 工资信息表
4.2.6员工调动信息表
表4-6 员工调动信息表
视图是一种常用的数据库对象,是关系数据库系统提供给用户以多种角度来观察数据的一种重要机制。
使用视图是的用户能够以更多样而且更有弹性的方式来访问数据,这不仅可以确保数据库的安全性,而且可以提高其使用的便利性。
视图的作用是可以间接的访问其他的表或者视图中的数据。
在数据库的应用中使用视图有几方面优点:
(1)集中数据显示;
(2)简化数据操作;
(3)提供简便易行的安全保密措施;
(4)易于合并或分割数据。
相对于人事信息管理系统,对员工基本信息的查询较为频繁,故创建一个显示员工基本信息的视图view_staff;结算工资时,会用到员工的工资信息,故建立一个员工工资信息视图view_gongzi,还会考虑员工的出勤情况,故建立一个某个员工出勤情况的视图view_chuqin;员工对自己的工作信息进行查询时,要用到工作信息视图,故建立一个工作信息视图view_gognzuo,部门进行管理时,需要查询部门信息,故需要建立一个部门信息视图view_bumen等。
4.4索引的建立
索引是SQL Server访问数据使用的一种辅助数据结构,主要作用是提高数据的访问速度和确保数据的唯一性。
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值得集合和相应说指向表中物理标识这些值的数据页的逻辑指针清单。
索引是依赖于表建立的,可以有效的进行数据选择和排序。
索引的优点有:
(1)利用索引可以大大提高查询速度;
(2)保证数据的唯一性;
(3)在使用GROUP BY和ORDER BY子句进行检索数据时,可以显著减少查询中分组和排序的时间;
(4)使用索引可以在检索数据的过程中进行优化,提高系统性能;
(5)可以加速表与表之间的连接。
由上所述,在人事信息管理系统中各表的主键列需强制唯一,更按升序排列创建索引,便于信息的查询搜索,建立了以下几个索引:员工姓名聚集索引,部门名称聚集索引,考勤编号聚集索引,工作主键聚集索引,身份证号唯一索引。
4.5存储过程的建立
存储过程是一组为了完成特定功能的表达式集合,经编译后存储在数据库中。
用户通过指定存储过程的名字并给出参数来执行。
存储过程可以包括程序流、逻辑以及对数据库的查询,可以接受输入参数、输出参数、返回单个或多个结果集以及返回值。
存储过程结合了SQL的数据操作能力和过程化语言的流程控制能力,是SQL的过程化扩展。
存储过程的优点:
(1)允许标准组件式编程;
(2)能够实现较快的执行速度;
(3)能够有效降低网络流量;
(4)可被作为一种安全机制来充分利用。
在人事信息管理系统中,首先需要创建一个存储过程,其用于查询数据库中每个员工的基本信息;创建存储过程,用于返回全部男士的工作信息;创建一个存储过程,用于查询员工工资信息;创建一个存储过程,其用于按日期查询每个职工的出勤情况信息;创建一个存储过程,按日期查询各部门的调动信息。
4.6触发器的建立
触发器是一种由事件驱动的特殊的存储过程,当它被定义在表上时,可看作表的一部分,一旦定义,任何用户当试图对表进行增加、删除或修改操作时,都由服务器自动激活相应的触发器,即触发器被请求。
由此在DBMS核心层进行集中的完整性控制。
触发器的主要作用就是:能够实现由主键、外键以及各种常规数据约束所不能保证的复杂的参照完整性和数据的一致性。
所以,触发器是一种确保数据和业务完整性的较好方法。
在人事信息管理系统中,创建触发器检查员工的年龄,确保在0-100之间为有效年龄; 创建触发器,在插入、修改、删除操作记录时,自动显示表中内容;创建触发器防止表中数据被恶意删除。
4.7约束的建立
约束是在SQL Sever中实现数据完整性的一种方法,它通过定义可输入表或表的单个列中的数据的限制条件而自动保持数据库完整性。
SQL Sever中有5种约束:主键约束、外键约束、唯一性约束、检查约束和默认约束。
每一种数据完整性类型,都由不同的约束类型来保障:域完整性是由默认值或检查约束予以保障;实体完整性则依靠逐渐或唯一约束来保障;而参照完整性就需要通过外键约束来保障了。
5.数据库物理实现
5.1数据库的建立
详细信息创建如下:
create database rs
on(
name=renshi_m,
='e:\rs_m.mdf',
size=10mb,
maxsize=100mb,
=1mb
),
(
name=company_n,
='e:\rs_m.ndf',
size=10mb,
maxsize=100mb,
= 1mb
)
log on(
name=company_l,
='e:\rs_m.ldf',
size=10mb,
maxsize=100mb,
=1mb
)
Go
5.2数据表的建立
5.2.1创建员工信息表
USE [rs]
GO
CREATE TABLE [dbo].[员工信息表](
[员工编号] [char](9)COLLATE Chinese_PRC_CI_AS NOT NULL, [姓名] [char](8)COLLATE Chinese_PRC_CI_AS NOT NULL,
[性别] [char](2)COLLATE Chinese_PRC_CI_AS NOT NULL,
[年龄] [int] NOT NULL,
[民族] [char](4)COLLATE Chinese_PRC_CI_AS NOT NULL,
[身份证号] [char](18)COLLATE Chinese_PRC_CI_AS NOT NULL,
[入职时间] [datetime] NOT NULL,
[所在部门编号] [char](4)COLLATE Chinese_PRC_CI_AS NOT NULL, [联系电话] [char](11)COLLATE Chinese_PRC_CI_AS NOT NULL,
[基本工资] [int] NOT NULL
)ON [PRIMARY]
GO
5.2.2创建员工工作信息表
USE [rs]
GO
CREATE TABLE [dbo].[员工工作信息表](
[员工编号] [char](9)COLLATE Chinese_PRC_CI_AS NOT NULL,
[部门编号] [char](4)COLLATE Chinese_PRC_CI_AS NOT NULL,
[职称] [char](6)COLLATE Chinese_PRC_CI_AS NULL,
[工龄] [int] NULL
)ON [PRIMARY]
GO
5.2.3创建部门信息表
USE [rs]
GO
CREATE TABLE [dbo].[部门信息表](
[部门编号] [char](4)COLLATE Chinese_PRC_CI_AS NOT NULL,
[部门名称] [char](8)COLLATE Chinese_PRC_CI_AS NOT NULL,
[部门电话] [char](8)COLLATE Chinese_PRC_CI_AS NOT NULL,
[部门经理] [char](8)COLLATE Chinese_PRC_CI_AS NOT NULL )ON [PRIMARY]
GO
5.2.4创建工资信息表
USE [rs]
GO
CREATE TABLE [dbo].[工资信息表](
[员工编号] [char](9)COLLATE Chinese_PRC_CI_AS NOT NULL, [实上班天数] [int] NOT NULL,
[实发工资] [int] NULL,
[扣款] [int] NULL
)ON [PRIMARY]
GO
5.2.5创建考勤信息表
USE [rs]
GO
CREATE TABLE [dbo].[考勤信息表](
[员工编号] [char](9)COLLATE Chinese_PRC_CI_AS NOT NULL, [缺勤] [int] NULL,
[迟到] [int] NULL,
[早退] [int] NULL,
[日期] [datetime] NOT NULL
)ON [PRIMARY]
GO
5.2.6创建员工调动信息表
USE [rs]
GO
CREATE TABLE [dbo].[员工调动信息表](
[员工编号] [char](9)COLLATE Chinese_PRC_CI_AS NOT NULL,
[姓名] [char](8)COLLATE Chinese_PRC_CI_AS NOT NULL,
[原部门编号] [char](4)COLLATE Chinese_PRC_CI_AS NULL,
[新部门编号] [char](4)COLLATE Chinese_PRC_CI_AS NULL,
[调离时间] [datetime] NULL,
[调入时间] [datetime] NULL
)ON [PRIMARY]
GO
5.3视图的建立
5.3.1在部门信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[部门员工工作信息]
AS
SELECT TOP(100)PERCENT dbo.部门信息表.部门编号AS部门的编号, dbo.部门信息表.部门名称AS部门的名称, dbo.员工工作信息表.员工编号, dbo.员工信息表.姓名,
dbo.员工工作信息表.职称, dbo.员工工作信息表.工龄FROM dbo.部门信息表INNER JOIN
dbo.员工工作信息表ON dbo.部门信息表.部门编号= dbo.员工工作信息表.部门编号INNER JOIN
dbo.员工信息表ON dbo.员工工作信息表.员工编号= dbo.员工信息表.员工编号
ORDER BY dbo.员工工作信息表.员工编号
GO
5.3.2在工资信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[员工工资信息]
AS
SELECT TOP(100)PERCENT dbo.工资信息表.员工编号,dbo.员工信息表.姓名,dbo.工资信息表.实上班天数, dbo.工资信息表.实发工资, dbo.工资信息表.扣款
FROM dbo.工资信息表INNER JOIN
dbo.员工信息表ON dbo.工资信息表.员工编号= dbo.员工信息表.员工编号
ORDER BY dbo.员工信息表.姓名
GO
5.3.3在员工工作信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[员工工作信息]
AS
SELECT dbo.员工工作信息表.员工编号, dbo.员工信息表.姓名, dbo.员工工作信息表.部门编号, dbo.部门信息表.部门名称, dbo.员工工作信息表.职称,
dbo.员工工作信息表.工龄
FROM dbo.员工工作信息表INNER JOIN
dbo.员工信息表ON dbo.员工工作信息表.员工编号= dbo.员工信息表.员工编号INNER JOIN
dbo.部门信息表ON dbo.员工工作信息表.部门编号= dbo.部门信息表.部门编号
GO
5.3.4在考勤信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[员工考勤信息]
AS
SELECT dbo.考勤信息表.员工编号, dbo.考勤信息表.缺勤, dbo.考勤信息表.迟到, dbo.考勤信息表.早退, dbo.考勤信息表.日期, dbo.员工信息表.姓名
FROM dbo.考勤信息表INNER JOIN
dbo.员工信息表ON dbo.考勤信息表.员工编号= dbo.员工信息表.员工编号
GO
5.3.5在员工信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[员工信息]
AS
SELECT dbo.员工信息表.员工编号, dbo.员工信息表.姓名, dbo.员工信息表.年龄, dbo.员工信息表.性别, dbo.员工信息表.联系电话, dbo.员工信息表.所在部门编号,
dbo.部门信息表.部门名称, dbo.员工信息表.入职时间, dbo.员工信息表.身份证号, dbo.员工信息表.民族, dbo.员工信息表.基本工资
FROM dbo.员工信息表INNER JOIN
dbo.部门信息表ON dbo.员工信息表.所在部门编号= dbo.部门信息表.部门编号
GO
5.3.6在员工调动信息表创建视图
USE [rs]
GO
CREATE VIEW [dbo].[各部门员工调动信息]
AS
SELECT TOP(100)PERCENT部门信息表_1.部门名称AS新部门名称, dbo.员工调动信息表.新部门编号, dbo.员工调动信息表.调入时间, dbo.员工调动信息表.员工编号,
dbo.员工调动信息表.姓名, dbo.部门信息表.部门名称AS原部门名称, dbo.部门信息表.部门编号AS原部门编号, dbo.员工调动信息表.调离时间FROM dbo.部门信息表INNER JOIN
dbo.员工调动信息表ON dbo.部门信息表.部门编号= dbo.员工调动信息表.原部门编号INNER JOIN
dbo.部门信息表AS部门信息表_1 ON dbo.员工调动信息表.新部门编号=部门信息表_1.部门编号
ORDER BY原部门编号
GO
5.4索引的建立
5.4.1在部门信息表创建索引
部门编号唯一索引
USE [rs]
GO
CREATE UNIQUE NONCLUSTERED INDEX [部门编号] ON [dbo].[部门信息表]
(
[部门编号] ASC
)WITH(SORT_IN_TEMPDB =OFF,DROP_EXISTING =OFF,IGNORE_DUP_KEY =OFF, ONLINE =OFF)ON [PRIMARY]
部门名称唯一索引
USE [rs]
GO
CREATE UNIQUE NONCLUSTERED INDEX [部门名称] ON [dbo].[部门信息表]
(
[部门名称] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.4.2在工资信息表创建索引
扣款不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [扣款] ON [dbo].[工资信息表]
(
[扣款] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF,
IGNORE_DUP_KEY =OFF, ONLINE =OFF)ON [PRIMARY]
实发工资不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [实发工资] ON [dbo].[工资信息表]
(
[实发工资] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.4.3在考勤信息表创建索引
迟到不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [迟到] ON [dbo].[考勤信息表]
(
[迟到] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
早退不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [早退] ON [dbo].[考勤信息表]
(
[早退] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.4.4在员工调动信息表创建索引
原部门编号不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [原部门编号] ON [dbo].[员工调动信息表]
(
[原部门编号] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
新部门编号不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [新部门编号] ON [dbo].[员工调动信息表]
(
[新部门编号] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.4.5在员工工作信息表创建索引
工龄不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [工龄] ON [dbo].[员工工作信息表]
(
[工龄] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
职称不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [职称] ON [dbo].[员工工作信息表]
(
[职称] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.4.6在员工信息表创建索引
员工编号唯一索引
USE [rs]
GO
CREATE UNIQUE NONCLUSTERED INDEX [员工编号] ON [dbo].[员工信息表]
(
[员工编号] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
姓名不唯一索引
USE [rs]
GO
CREATE NONCLUSTERED INDEX [姓名] ON [dbo].[员工信息表]
(
[姓名] ASC
)WITH(SORT_IN_TEMPDB =OFF, DROP_EXISTING =OFF, IGNORE_DUP_KEY =OFF, ONLINE = OFF)ON [PRIMARY]
5.5储存过程的建立
5.5.1创建存储过程,返回全部男士的工资信息
use rs
go
create procedure gongzuo_male
as
select员工信息表.姓名,性别,实发工资from员工信息表,工资信息表
where员工信息表.员工编号=工资信息表.员工编号and员工信息表.性别='男'
go
5.5.2创建存储过程,其用于查询数据库中每个员工的基本信息
use rs
go
create procedure gongzuo
as
select员工信息表.员工编号,姓名,性别,年龄,民族,身份证号,入职时间,联系电话,基本工资from员工信息表
go
5.5.3创建存储过程,用于按日期统查询每个职工的出勤信息
use rs
go
create procedure kaoqin
as
select考勤信息表.日期,员工编号,迟到,早退,缺勤from考勤信息表
go
5.5.4创建一个存储过程,用于查询员工工作信息
use rs
go
create procedure gongzi
as
select员工工作信息表.员工编号,姓名,部门编号,职称,工龄from员工工作信息表,员工信息表
where员工工作信息表.员工编号=员工信息表.员工编号
go
5.5.5创建一个存储过程,按日期查询各部门的调动信息
use rs
go
create procedure diaodong
as
select员工调动信息表.调入时间,员工编号,姓名,新部门编号,原部门编号,调入时间from员工调动信息表
go
5.6触发器的建立
5.6.1创建触发器检查员工的年龄,确保在0-100之间为有效年龄
use rs
go
create trigger age_0_100 on员工信息表
for insert,update
as
declare @年龄int
select年龄=年龄from inserted
if @年龄<0 and @年龄>100
begin
rollback
print('年龄必须在0-100')
End
5.6.2创建触发器,在插入、修改、删除操作记录时,自动显示表中内容use rs
go
create trigger yuangong on员工工作信息表
for insert,update,delete
as
select*from员工工作信息表
5.6.3创建触发器防止表中数据被恶意删除
use rs
go
create trigger noupdate on部门信息表
for update
as
begin
print('不允许你恶意删除本表数据!')
rollback transaction
return
end
5.7约束的建立
5.7.1在部门信息表建立约束
USE [rs]
GO
ALTER TABLE [dbo].[部门信息表] WITH CHECK ADD CONSTRAINT [CK_部门信息表] CHECK (([部门编号]<>NULL))
USE [rs]
GO
ALTER TABLE[dbo].[部门信息表] WITH CHECK ADD CONSTRAINT[CK_部门信息表_1] CHECK (([部门名称]<>NULL))
5.7.2在工资信息表建立约束
USE [rs]
GO
ALTER TABLE [dbo].[工资信息表] WITH CHECK ADD CONSTRAINT [CK_工资信息表] CHECK (([员工编号]<>NULL))
USE [rs]
GO
ALTER TABLE[dbo].[工资信息表] WITH CHECK ADD CONSTRAINT[CK_工资信息表_1] CHECK (([实上班天数]>(0)))
5.7.3在考勤信息表建立约束
USE [rs]
GO
ALTER TABLE [dbo].[考勤信息表] WITH CHECK ADD CONSTRAINT [CK_考勤信息表] CHECK (([员工编号]<>NULL))。