软件工程专业
《数据库课程
》
(2015/2016学年 第一学期)
学生姓名: 李东栋
学生班级: 软件工程132001班
学生学号: 201320020113
指导教师: 赵淑芳
2015年 12月21日
太原科技大学
课程设计成绩评审表
课程设计名称
数据库课程设计
课程设计题目
学生姓名
专业班级
学号
同组人
指导教师
设计成绩
评价内容
签 字:
时 间: 年 月 日
计算机科学与技术学院
课程设计任务书
学号:201320020113
课程设计名称
数据库课程设计
课程设计题目
大学生就业咨询系统
学生姓名
李东栋
专业班级
软件工程132001班
课程设计任务内容
[问题描述]
大学生就业咨询系统包含以下功能:
(1)管理员能对用人公司的基本信息进行录入、修改、删除等。
(2)能对毕业生专业信息的进行维护。
(3)可以定时发布用人公司的毕业生需求信息。
(4)方便的实现对人才需求信息的检索。
(5)大学生能够随时查找相关的需求公司招聘信息。
(6)具有数据备份和数据恢复功能。
[基本要求]
(1)能够完整的设计出该系统的数据库。
(2)用mysql数据库进行设计,表之间联系要强。
[测试要求]
(1)管理员能对系统进行用人公司的增、删、查、改操作。
(2)对数据库的操作需要有正确的结果。
指导教师:
时 间: 年 月 日
目录
第一章 系统概述 2
1.1 系统背景 2
1.2 系统目的及意义 2
第二章 系统需求分析 3
2.1用户需求 3
2.3数据流图 3
2.2 数据字典 4
第三章 系统数据库设计 6
3.1功能模块图 6
3.2系统E-R图 及其关系模型 6
3.3数据库概念模型(CDM)设计 8
3.4 数据库物理模型(PDM)设计 9
第四章 系统数据库对象设计 10
4.1数据库表设计 10
4.2索引设计 12
4.3 视图设计 12
4.4 约束设计 13
4.5 存储过程设计 13
4.6
设计 14
4.7 触发器设计 16
第五章 #个人
# 17
参考文献 18
第一章 系统概述
1.1 系统背景
目前国内的人才网站已经多达几千家,而且各种大型网站以及专业网站都纷纷建立自己的人才频道,企业自己的网站也正在开通人才网站的功能以方便求职者和提高自身的服务效率。随着网络技术的飞速发展,网上求职招聘将更是非常频繁应用的方式。所以我根据所学的数据库原理与程序设计的知识,针对大学生就业咨询进行系统的需求分析,设计了更加简洁的大学生就业咨询系统数据库以完成题目要求的功能从而达到开发大学生就业咨询系统的目的。
1.2 系统目的及意义
随着社会的发展,就业竞争压力不断加大,大学生就业问题变得日益突出,目前大学生就业难成为一大社会问题,而且每次去人才市场,都能看到人山人海的情境,每个公司或企业招聘咨询平台的都是排着一条条长龙,让我们真正体会到我们是龙的传人,这说明现在大学生就业咨询还非常空难,咨询就业情况非常的不方便。这就是传统的就业咨询方式。传统的招聘方式不仅不方便,而且手时间和空间的限制,让许多人失去了就业机会,而网上招聘系统提供了方便简洁,易于管理的平台。所以本次实验的名称是大学生就业咨询系统,目的就是为了方便大学毕业生可以成功的查询人才需求的信息,以便自己去直接找到自己心仪的公司应聘。
大学生就业咨询系统是适应市场需求的客观前提下,为了满足招聘企业和应职大学生双向需求所开发的,该系统的最终目的构建一个平台,收录招聘企业的基本信息供大学毕业生及时的查看某些公司的招聘信息,然后根据自己的需求爱好来理性的选择自己想要去的公司,然后直接通过需求公司过企业在大学生就业咨询系统平台上所留下的联系方式来联系他们,或者直接往那些公司投递自己的简历,而不是像传统的咨询方式一样,自己跑到公司或企业去问相关人员是否缺人,自己的学历水平是否合格。在有了大学生就业咨询系统的帮助下,一切的咨询都将变得简单且便利,既给大学生就业咨询提供了便利,也给那些公司过企业减少了不必要的麻烦,是一个两全其美的方法,这也就是大学生就业咨询系统设计的目的和意义。
第二章 系统需求分析
2.1用户需求
1.管理员需求: (1)对用人单位的基本信息进行查找、录入、修改、删除等。
(2)实现毕业生专业信息的维护。 (3)定时发布用人单位的毕业生需求信息。
(4)方便的实现对人才需求信息的检索。
2.大学毕业生: 对用人公司信息的查询,打印。
2.3数据流图
1、系统顶层数据流图
图2-1 顶层数据流图
2、系统一级数据流图
图2-2 大学生查找信息数据流图
图2-3 管理员操作系统数据流图
2.2 数据字典
1.数据存储
数据存储是数据结构停留或保存的地方,也是数据流的来源与去向之一。
名字:需求表
描述:记录公司的需求和要求
编号:D1
组成:公司编号,需求专业编号,发布年度,需求数量,专业名称,学历要求
名字:公司表
描述:需求公司的信息记录
编号:D2
组成:公司编号,公司名称,公司规模,联系方式
名字:专业信息表
描述:记录专业的编号和其信息
编号:D3
组成:专业编号,专业信息
2.数据流
数据流是数据结构在系统内传输的路径,对数据流的内容,通常应该包括以下内容:数据流名,说明,编号,数据流来源,去向,组成。
编号:F1
名字:查询招聘信息
描述:浏览查看用人公司的招聘信息
3.数据处理
数据处理通常是表示系统对用户输入命令的处理过程,在数据字典中,数据处理一般包括:处理过程名,说明,输入数据流,输出数据流,处理。
编号:P0
名字:大学生就业咨询系统
描述:整个系统
输入/输出:D1,D2,D3
第三章 系统数据库设计
3.1功能模块图
图3-1 系统功能模块图
3.2系统E-R图 及其关系模型
1.表对应的局部和整体E-R图
图3-2 用人公司E-R图
图3-3 属于E-R图
图3-4 专业信息E-R图
图3-5 地区E-R图
图3-6 公司要求E-R图
图3-7 总体E-R图
2.E-R图对应关系模型(主码用下划线标出)
用人公司(公司编号,公司名称,公司规模,联系方式)
属于(公司编号,所在地编号)
专业信息(专业编号,专业信息)
地区(地区编号,地区名称)
要求(公司编号,专业编号,年度,需求人数,专业名称,学历要求)
3.3数据库概念模型(CDM)设计
图3-8 系统概念模型CDM图
3.4 数据库物理模型(PDM)设计
图3-9 系统物理模型PDM图
第四章 系统数据库对象设计
4.1数据库表设计
CREATE TABLE `belong` (
`comid` int(11) NOT NULL COMMENT '用人单位号',
`addrid` int(11) NOT NULL COMMENT '用人单位地区号',
PRIMARY KEY (`comid`,`addrid`),
KEY `addrid` (`addrid`),
CONSTRAINT `belong_ibfk_1` FOREIGN KEY (`comid`) REFERENCES `company` (`id`),
CONSTRAINT `belong_ibfk_3` FOREIGN KEY (`addrid`) REFERENCES `region` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图4-1 belong表图示
CREATE TABLE `company` (
`id` int(11) NOT NULL COMMENT '公司编号',
`name` varchar(20) DEFAULT NULL COMMENT '公司名称',
`size` varchar(10) DEFAULT NULL COMMENT '公司规模',
`telephone` varchar(20) DEFAULT NULL COMMENT '联系方式',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图4-2 company表图示
CREATE TABLE `majorinfo` (
`id` int(11) NOT NULL COMMENT '专业编号',
`info` varchar(20) NOT NULL COMMENT '专业信息',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图4-3 majorinfo表图示
CREATE TABLE `region` (
`id` int(11) NOT NULL COMMENT '地区编号',
`name` varchar(20) NOT NULL COMMENT '地区名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图4-4 region表图示
CREATE TABLE `request` (
`comid` int(11) NOT NULL COMMENT '公司编号',
`majorid` int(11) NOT NULL COMMENT '专业编号',
`year` year(4) NOT NULL COMMENT '发布年份',
`quantity` varchar(10) NOT NULL COMMENT '需求数量',
`major` varchar(20) NOT NULL COMMENT '专业要求',
`education` varchar(10) NOT NULL COMMENT '学历要求',
PRIMARY KEY (`comid`),
KEY `majorid` (`majorid`),
CONSTRAINT `request_ibfk_1` FOREIGN KEY (`comid`) REFERENCES `company` (`id`),
CONSTRAINT `request_ibfk_2` FOREIGN KEY (`majorid`) REFERENCES `majorinfo` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图4-5 request表图示
4.2索引设计
CREATE PRIMARY INDEX PRIMARY ON belong;
CREATE INDEX addrid ON belong;
CREATE PRIMARY INDEX PRIMARY ON company;
CREATE PRIMARY INDEX PRIMARY ON majorinfo;
CREATE PRIMARY INDEX PRIMARY ON region;
CREATE PRIMARY INDEX PRIMARY ON request;
CREATE majorid INDEX PRIMARY ON request;
4.3 视图设计
CREATE VIEW colstuvoccounsys.view_1 AS SELECT company.id AS id_1, request.comid AS comid_1,majorinfo.id AS id_2, region.id AS id_3,belong.comid AS comid_2, belong.addrid FROM belongINNER JOIN request ON belong.comid = request.comidINNER JOIN region ON belong.addrid = region.idINNER JOIN majorinfo ON request.majorid = majorinfo.id INNER JOIN company ON belong.comid = company.id AND request.comid = company.id;
4.4 约束设计
alter table belong add constraint FK_Reference_4 foreign key (id)
references region (id) on delete restrict on update restrict;
alter table belong add constraint FK_Reference_5 foreign key (com_id)
references company (id) on delete restrict on update restrict;
alter table request add constraint request_ibfk_1 foreign key (comid)
references company (id);
alter table request add constraint request_ibfk_2 foreign key (majorid)
references major (id);
4.5 存储过程设计
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `colstuvoccounsys`.`request_major`(IN majorname VARCHAR(20),OUT count_num INT)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
READS SQL DATA
BEGIN
SELECT COUNT(*) FROM request WHERE major=majorname;
END$$
DELIMITER ;
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `colstuvoccounsys`.`company_size`(IN companysize VARCHAR(10),OUT count_num INT)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
READS SQL DATA
BEGIN
SELECT COUNT(*) FROM company WHERE size=companysize;
END$$
DELIMITER ;
4.6 函数设计
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `colstuvoccounsys`.`funk_company`(companysize VARCHAR(20))
RETURNS VARCHAR(40)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
RETURN (SELECT *FROM company GROUP BY size HAVING size=companysize);
END$$
DELIMITER ;
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `colstuvoccounsys`.`funk_request`(companymajor VARCHAR(20))
RETURNS VARCHAR(40)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
RETURN (SELECT * FROM request GROUP BY major HAVING major=companymajor);
END$$
DELIMITER ;
4.7 触发器设计
/*company表触发器*/
CREATE TRIGGER companyid
AFTER UPDATEON company
FOR EACH ROWUPDATE request
SET comid=new.id WHERE comid =old.id;
第5章 个人总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计增加很多认识,在拿到课程设计题目时,没有像以前一样马上开始动手写代码,我先做了整体的分析,把要设计的表,表的属性,表间的关系全部弄清楚,并画了相应的关系图和E-R图,从而也就基本形成了这次设计的整体构架。在写代码的过程中明显感觉到很轻松,就是照着所设计的思路一步一步地进行。并得到以下总结:首先,流程是一切的根源,进度控制是项目顺利进行的基础。没有大局观,面对问题和变更就会不知所措了。其次,构架是很重要的,整体框架搭好,具体细节实现起来就是顺理成章的事了。最后,实践比一切空谈和理论更能学到东西。平时学的那些理论都不过是皮毛罢了,一旦不用很快就忘记,始终要在实践中才会发现问题才会努力去解决才能成长。看到题目后就一直在思考怎么设计好这个数据库,从理论到实践,在这些日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,毕竟是第一次做这样的设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,例如在设计整体架构设计各表之间的关系时,总是考虑不够周到,数据的完整性和一致性把握不准。理论不够
化,关系模式不够优越。为了实现这些,我也参阅了很多关于数据库设计方面的书,从中受益匪浅。在这次课程设计过程中,也有很多没有想到的地方,通过上网查找资料,完善了不少的功能。在这次课程设计过程中,我深刻感觉到自己知识的缺乏,还需要课外继续学习,不断完善和增加自身的知识和经验。最后,感谢老师的指导,让我顺利的完成了本次的数据库课程设计。
参考文献
[1] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006
[2] 张海藩,牟永敏.软件工程导论(第六版)北京:清华大学出版社,2014