1、高校教师信息管理系统课程设计报告学号 高校教师信息管理系统课程设计报告题 目 : 高校教师信息管理系统专 业 : 网络工程班 级 :姓 名 :指导教师:成 绩 :计算机学院2017年 12 月 8 日1、设计内容及要求 11.1 设计内容 11.2 设计要求 12、概要设计 12.1 概要简述 12.2 逻辑结构设计 22.3 物理结构设计 23、设计过程和代码 33.1 视图 .33.2 存储过程 33.3 触发器 33.4 主要代码 84、设计结果与分析 124.1 需求分析: .124.2 功能分析: 135、参考文献 131、设计内容及要求1.1 设计内容(4)逻辑( 1)设计题目确定
2、、申报、素材准备与设计。(2)系统需求分析与功能设计:阐明应用系统背景,组织结构情况以及需求分析的过程,并绘制出数据流程图,写出数据字典。(3)概念结构设计:根据概念结构设计的基本原则,确定概念模型,并阐明分析步骤和理论依据完成数据库的概念设计,画出 E-R 图。结构设计:根据需求分析和概念模型, 将实体及实体间的联系按一定的转换规则转换为关系模型,写出转换步骤及相应的理论依据,并确定主码、外码。按数据库设计方法和规范化理论得出符合 3NF 的逻辑模型。(5)利用 SQL Server2005建立相应的数据库对象。(6)利用 SQL 语句实现相应功能。(7)编写数据库课程设计报告并提交相应资料
3、与成果。1.2 设计要求(1)要求独立完成自己题目的课程设计,如有抄袭,成绩按不及格处理。(2)要求学生利用数据库原理课程所学知识和方法独立完成所布置题目。(3)要求所设计的系统规模适中,用 SQL 语句实现基本的增、删、改、查询功能。( 4)数据库中至少要包含三个表, 且每个表都要满足 3NF,指明主码、外码等。(5)尽量多的使用 SQL Server2005中的对象, 如:视图、触发器、约束、 默认、规则、索引等。(6)简单的系统与功能分析,建立数据结构表。(7)每天下机时,要及时将自己的开发拷贝带走;上机期间,学生要服从指导教师的统一安排,遵守机房制度;严格遵守纪律,不迟到,不早退,无故
4、缺勤者,成绩按不及格处理。2、概要设计2.1 概要简述在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构, 才能更好地、更准确地用某一 DBMS 实现这些需求。概念结构的主要特点是:1.能真实、充分地反应现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;2.易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;3.易于更改,当应用环境和应用要求改变时, 容易对概念模型修改和扩充;4.易于向关系、网状、层次等各种数据模型转换。概念结构是各种数据模型的共同基础, 它比数据模型更独立于机器、 更抽象,从而更加稳定。
5、描述概念模型的有力工具是 E-R 模型。下面设计高校教职工管理系统的 E-R 图:编 奖 福 备人编 姓 性 职 学实 基计 员工 编 名发 本算时 地备 出 联 婚注 生 系 姻编 原2.2逻辑结构设计:下面将 E-R 图转换为关系模型:员工信息(员工编号,员工姓名,年龄,性别,出生年月,婚姻状态,政治面貌,学历,部门编号,职务,联系方式,备注) 主键:员工编号; 外码:部门编号;部门信息(部门编号,部门名称,部门人数) 主键:部门编号;奖惩信息(奖惩编号,员工编号,奖罚时间,奖罚原因,奖罚地点,备注)主键:奖惩编号, 外码:员工编号;薪资信息(薪资编号,员工编号,基本工资,福利,奖金,计算
6、方法,实发工资,发放日期), 主键:薪资编号; 外码:员工编号。2.3物理结构设计:数据库物理设计阶段的任务是根据具体计算机系统 (DBMS 和硬件等 )的特点,为给定的数据库系统确定合理的存储结构和存取方法。 所谓的“合理” 主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间, 另一个对数据库的操作具有尽可能高的速度。主要体现在索引和蔟集的设置。存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。将日志文件和数据库对象 (表、索引等 )分别放在不同的磁盘,可以改进系统的性能,提高系统的安
7、全性。 所以,系统应将日志文件和数据文件存放在不同磁盘上。3、设计过程和代码3.1 视图视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。3.2 存储过程存储过程就是将常用的或很复杂的工作,预先用 SQL 语句写好并用一个指定的名称存储起来 , 那么以后要叫数据库提供与已定义好的
8、存储过程的功能相同的服务时 ,只需调用 execute,即可自动完成命令。存储过程的优点:(1)存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次 ,所以使用存储过程可提高数据库执行速度。(2)当对数据库进行复杂操作时 (如对多个表进行 Update,Insert,Query,Delete时 ),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。(3)存储过程可以重复使用 ,可减少数据库开发人员的工作量(4)安全性高 ,可设定只有某此用户才具有对指定存储过程的使用权。3.3 触发器触发器是一种特殊类型的存储过程,它不同于
9、我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的, 而存储过程可以通过存储过程名字而被直接调用。 当对某一表进行诸如 Update、 Insert、 Delete 这些操作时, SQLServer 就会自动执行触发器所定义的 SQL 语句,从而确保对数据的处理必须符合由这些 SQL 语句所定义的规则。触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:(1) 强化约束 (Enforce restriction)触发器能够实现比 CHECK 语句更为复杂的约束。(2) 跟踪变化 Auditing chang
10、es触发器可以侦测数据库内的操作, 从而不允许数据库中未经许可的指定更新和变化。(3) 级联运行 (Cascaded operation)。触发器可以侦测数据库内的操作, 并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作 (如删除,更新,插入 )而该操作又导致该表上触发器被触发。(4) 存储过程的调用 (Stored procedure invocation)。在物理结构中, 数据的基本存取单位是存储记录。 有了逻辑结构以后, 就可以设计存储记录结构, 一个存储记录可以与多个逻辑记录相对应。 存储记录就包括记录的组成,数据项的类型和长度等。下面是各个信
11、息表:员工信息表列名 数据类型 大小 允许空 备注员工编号 int NOT NULL 主码员工姓名 varchar 20 NOT NULL年龄 int NOT NULL性别 varchar 2 NOT NULL出生年月 Datetime NOT NULL婚姻状态 varchar 4 NOT NULL政治面貌varchar20NOTNULL学历varchar20NOTNULL部门编号intNOTNULL外码职务varchar20NOTNULL联系方式varchar11NOTNULL备注varchar500部门信息表列名数据类型大小允许空备注部门编号intNOTNULL主码部门名称varchar2
12、0NOTNULL部门人数 int NOT NULL薪资信息表列名 数据类型 大小 允许空 备注薪资编号 int NOT NULL 主码员工编号 int NOT NULL 外码基本工资 int NOT NULL福利 int NOT NULL奖金 int NOT NULL计算方法 int NOT NULL实发工资 int NOT NULL发放日期 int NOT NULL奖惩信息表列名 数据类型 大小 允许空 备注奖惩编号 Int NOT NULL 主码员工编号 Int NOT NULL 外码奖罚原因 Varchar 100 NOT NULL奖罚地点 Varchar 20 NOT NULL奖罚时间
13、 Datetime NOT NULL备注 varchar 500数据库在 SQL Sever2005中显示如下:(1)数据库:(2)员工信息表:(3)部门信息表:(4)薪资信息表:(5)奖惩信息表:(6)视图 1:部门部长信息(7)视图 2:员工基本信息3.4 主要代码:1、创建高校教职工管理数据库:CREATE DATABASE 高校教职工管理ON( NAME = 高校教职工管理 DAT ,FILENAME = 高校教职工管理 DAT.MDF ,SIZE= 5,MAXSIZE = 20,FILEGROWTH = 2)LOG ON( NAME = 高校教职工管理 LOG ,FILENAME =
14、 高校教职工管理 LOG.LDF ,SIZE= 5,MAXSIZE = 20,FILEGROWTH = 2)-2、创建备份文件sp_addumpdevicedisk,BACKUP1, 高校教职工管理 backup1.datgoBACKUP DATABASE 高校教职工管理 TO BACKUP1-3、创建表CREATE TABLE 部门信息表(部门编号 INT PRIMARY KEY ,部门名称 VARCHAR(20) UNIQUE NOT NULL,部门人数 INT CHECK (部门人数 = 0) NOT NULL,)-CREATE TABLE 员工信息表(员工编号 INT NOT NULL
15、 PRIMARY KEY ,员工姓名 VARCHAR(20) NOT NULL,年龄 INT CHECK (年龄 = 1) NOT NULL,性别 VARCHAR(2) CHECK (性别 IN (男,女) NOT NULL,出生年月 DatetimeNOT NULL,婚姻状态 VARCHAR(4) CHECK (婚姻状态 IN (已婚 ,未婚 ) NOT NULL,政治面貌 VARCHAR(20) CHECK (政治面貌 IN (清白 ,团员 ,党员 ) NOT NULL,学历 VARCHAR(20) NOT NULL,部门编号 INT NOT NULL,职务 VARCHAR(20) NOT
16、 NULL,联系方式 VARCHAR(11) UNIQUE NOT NULL,备注 VARCHAR(500),FOREIGN KEY (部门编号 ) REFERENCES 部门信息表 (部门编号 )-CREATE TABLE 薪资信息表(薪资编号 INT PRIMARY KEY ,员工编号 INT NOT NULL,基本工资 INT CHECK (基本工资 = 0) NOT NULL,福利 INT CHECK (福利 = 0) NOT NULL,奖金 INT CHECK (奖金 = 0) NOT NULL,计算方法 VARCHAR(50) NOT NULL,实发工资 INT CHECK (实发
17、工资 = 0),发放日期 DatetimeNOT NULL,FOREIGN KEY (员工编号 ) REFERENCES 员工信息表 (员工编号 )-CREATE TABLE 奖惩信息表(奖惩编号 INT PRIMARY KEY ,员工编号 INT NOT NULL,奖罚时间 DatetimeNOT NULL,奖罚原因 VARCHAR(100) NOT NULL,奖罚地点 VARCHAR(20) NOT NULL,备注 VARCHAR(500),FOREIGN KEY (员工编号 ) REFERENCES 员工信息表 (员工编号 )-4、创建视图:-视图员工基本信息:CREATE VIEW 员
18、工基本信息 (员工姓名 ,部门名称 ,职务 ,联系方式 ,薪资 )AS SELECT 员工姓名 ,部门名称 ,职务 ,联系方式 ,实发工资FROM 员工信息表 ,部门信息表 ,薪资信息表WHERE 员工信息表 .部门编号 = 部门信息表 .部门编号AND 员工信息表 .员工编号 =薪资信息表 .员工编号-视图:各部门部长信息CREATE VIEW 部门部长信息 (部门编号 ,部门名称 ,员工编号 ,员工名字 )AS SELECT 部门信息表 .部门编号 ,部门名称 ,员工编号 ,员工姓名FROM 员工信息表 ,部门信息表WHERE 员工信息表 .部门编号 = 部门信息表 .部门编号AND 员工
19、信息表 .职务 = 部长 -5、创建存储过程-存储过程 LOOKWAGE: 根据员工提交的员工编号和工资发放时间,查看该员工的薪资信息,- 包括员工编号,姓名,实发薪资,和发放日期。CREATE PROCEDURE LOOKWAGEID INT ,TIME DatetimeASSELECT 员工信息表 .员工编号 ,员工姓名 ,实发工资 ,发放日期FROM 员工信息表 ,薪资信息表WHERE 员工信息表 .员工编号 = 薪资信息表 .员工编号AND 员工信息表 .员工编号 =ID AND 发放日期 = TIME-存储过程 LOOKREWARDS: 根据员工提交的员工编号和奖罚时间 ,查看该员工
20、的奖罚信息,- 包括员工编号,姓名,奖罚原因,奖罚时间。CREATE PROCEDURE LOOKREWARDSID INT ,TIME DatetimeASSELECT 员工信息表 .员工编号 ,员工姓名 ,奖罚原因 ,奖罚时间FROM 员工信息表 ,奖罚信息表WHERE 员工信息表 .员工编号 = 奖罚信息表 .员工编号AND 员工信息表 .员工编号 = ID AND 发放日期 = TIME-存储过程 Find_Minister:根据提交的部门编号,查看该部门的部长CREATE PROCEDURE Find_MinisterID INTASSELECT 部门信息表 .部门编号 ,部门信息表
21、 .部门名称 ,员工信息表 .员工编号 ,员工姓名FROM 员工信息表 ,部门信息表WHERE 员工信息表 .部门编号 = 部门信息表 .部门编号AND 员工信息表 .职务 = 部长 -6、创建触发器-触发器 workerid:要求员工信息表中的员工编号被修改时,薪资信息表- 奖惩信息表中的员工编号也被修改。CREATE TRIGGER WORKERID ON 员工信息表FOR UPDATEASBEGINIF(UPDATE (员工编号 )BEGINUPDATE 薪资信息表SET 薪资信息表 .员工编号 =(SELECT 员工编号 FROM inserted)WHERE 薪资信息表 .员工编号
22、=( SELECT 员工编号 FROM deleted)UPDATE 奖惩信息表SET 奖惩信息表 .员工编号 =(SELECT 员工编号 FROM inserted)WHERE 奖惩信息表 .员工编号 =( SELECT 员工编号 FROM deleted)ENDEND-触发器 CHECK_EXIST :-向员工信息表插入一条记录时,检查该记录的部门信息在部门信息表-是否存在,若不存在则不允许插入。CREATE TRIGGER CHECK_EXISTON 员工信息表FOR INSERTASIF EXISTS(SELECT * FROM inserted aWHERE a.部门编号 NOT I
23、N (SELECT 部门信息表 .部门编号 FROM部门信息表 )BEGINRAISERROR(该部门不存在! ,16,1)ROLLBACK TRANSACTION -撤销刚才的操作,恢复到原来的状态END-触发器 COUNT_STAFF-向员工信息表插入一条记录时 ,该员工所在的部门人数加 .CREATE TRIGGER COUNT_STAFF ON 员工信息表AFTER INSERTASBEGINUPDATE 部门信息表SET 部门人数 = 部门人数 + 1WHERE 部门编号 IN (SELECT 部门编号 FROM inserted)END-触发器 departid:要求部门信息中的部门编号被修改时,员工信息表中员工-所属部门编号也被修改。CREATE TRIGGER departid ON 部门信息表FOR UPDATEASBEGINIF(UPDATE (部门编号 )UPDATE 员工信息表SET 员工信息表 .部门编号 =(SELECT 部门编号 FROM inserted)WHERE 员工信息表 .部门编号 =( SELECT 部门编号 FROM i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1