MySQL数据库课程设计

第1章 程序设计内容及要求

1.1 程序设计题目

(1)创建student_dissertation数据库,在该数据库中创建4张数据表:t_student(学生表)、t_department(专业表)、t_dissertation(课题表)、t_s_dissertation(选题表),它们表结构设计如下:

(2)对各表输入以下数据:

在这里插入图片描述

(2)对各表输入以下数据:


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2程序设计内容及要求

(1)为各表设置主键
(2)查询要求得到所有专业号为1的男生的学生信息
(3)查询得到所有电子系男生的学生信息
(4)创建视图,显示学生所选课题还未通过审批的信息
(5)创建存储过程,通过指定专业,返回该专业所有学生的基本信息
(6)创建触发器,当某课题被删除时,选题表中相关记录也同时被删除
(7)建立数据库相关表之间的参照完整性约束,均设置为级联

1.3程序设计的目的

《数据库原理及应用》课程设计是非常重要的实践环节之一,是学完《数据库原理及应用》课程后的一次全面的综合练习。本课程设计主要在于巩固学生对数据库基本原理和基础理论得理解,掌握数据库应用系统的设计开发的基本方法,进一步提高学生综合运用所学知识的能力。
(1)通过本次设计是了解学生对数据库ˌ表的创建,以及插入数据ˌ存储过程等的掌握情况。
(2)掌握对MySQL的基本操作和使用技能。
(3)复习ˌ巩固本学期所学内容。
(4)通过一个实训提高学生的综合能力,并让学生从中发现自身存在的问题。

第2章程序实现思路

在数据库领域中,通常情况下都会设计E-R图,用来描述现实世界的事物。使用E-R图每一个实体对应一张数据表。
在实体图中,使用矩形表示实体,椭圆表示属性,并且使用无向边将其与实体连接起来。这样就可以很明确的看出实体所带有属性。如下画出四张表的实体图:

(1)学生表E-R图


在这里插入图片描述

(2)专业表E-R图


在这里插入图片描述

(3)课题表E-R图
在这里插入图片描述

(4)选课表E-R图


在这里插入图片描述

同时,一个数据库里的表也不是相互独立,它们之间存在着一定的联系,如学生表和专业表中都存在专业号这个属性。在E-R图中,可以使用关系表示实体间的联系。通常使用棱形来表示实体之间的联系。
在这里插入图片描述

通过表之间的联系,我们可以实现多表连接查询,通过表之间的关系,可以由一表中的信息查询得到另一表中的信息。理清各表之间的关系之后,再回顾所学知识数据库创建语句create database 创建数据库,再通过create table 创建各个表,之后再完善表里的数据,用insert into values 将数据插入表中。这样一个较完整的数据库就被创建好了。
然后,在由创建好的数据表实现对数据的查询,如提供学生的一个属性信息,可以查询该学生的所有信息。同时,根据题目要求,需要创建相应的视图ˌ存储过程ˌ触发器等。视图作用类似于筛选;触发器相当于给事件发生的前或后装一个触发装置;创建存储过程可以减少数据端和服务端的数据传输。
根据所学知识,通过create view语句创建视图,通过create procedure语句来完成存储过程的创建,通过create trigger来创建触发器。

第3章 程序清单或正文

1.创建数据库
create database student_dissertation;
在这里插入图片描述
2.创建t_student表
mysql> create table t_student(
    -> studentid char(20) not null,#学生学号
    -> studentname char(8) null,#姓名
    -> studentsex char(2) null,#性别
    -> departmentid int(8) null,#专业号
    -> studentphone char(30) null,#电话
    -> password char(20) null,#密码
    -> primary key(studentid)
-> );
在这里插入图片描述
3.创建t_department表
mysql> create table t_department(
    -> departmentid int(8) not null primary key,#专业号
    -> departmentname char(50) null,#专业名称
    -> manager char(8) null #主任名
    -> );
在这里插入图片描述
4.创建t_dissertation表
mysql> create table t_dissertation(
    -> dissertationid char(20) not null primary key,#课题号
    -> dissertationname char(30) null,#课题名称
    -> attachment char(30) null,#附件说明
    -> teachername char(8) null #指导教师名
    -> );
在这里插入图片描述
5.创建t_s_dissertation表
mysql> create table t_s_dissertation(
    -> studentid char(20) not null,
    -> dissertationid char(20) not null,
    -> introduction text null,
    -> sendtime datetime null,
    -> state char(10) null,
    -> primary key(studentid,dissertationid)
    -> );
在这里插入图片描述
6.给表t_department输入数据
mysql> insert into t_department values
(1,'电子系','杨明'),
(2,'计算机系','李长山'),
(3,'自动化系','顾林');
在这里插入图片描述
7.给表t_student输入数据
mysql> insert into t_student values
    -> ('1000','朱群','男',1,'13759778212','123456'),
    -> ('1001','王小川','男',1,'13576543233','778899'),
    -> ('1002','秦悦','女',2,'13767885731','456123'),
    -> ('1003','陈小飞','男',3,'13755897651','369874'),
    -> ('1004','胡小丽','女',3,'13567334622','147896'),
    -> ('1005','张维','女',1,'13854673392','458972'),
    -> ('1006','李勇','男',1,'13787416711','147896'),
    -> ('1007','罗青','女',1,'13887914751','146697');
在这里插入图片描述

在这里插入图片描述
8.给表t_dissertation 输入数据
mysql> insert into t_dissertation values
    -> ('Z001','基于CRC技术的无线通信模块','资助','沈方'),
    -> ('Z002','基于ARM的室内环境无线监测系统','资助','罗青'),
    -> ('D001','基于51单片机的GPS定位仪','资助','郭海'),
    -> ('J001','基于B/S构架的数字图书馆','资助','赵萍'),
    -> ('J002','听力训练播放器','非资助','王海');
在这里插入图片描述
9.给表t_s_dissertation 输入数据
mysql> insert into t_s_dissertation values
    -> ('1000','Z001','电子类','2009.10.20','待审批'),
    -> ('1001','Z002','电子类','2008.8.5','通过'),
    -> ('1002','J001','计算机类','2009.9.28','待审批'),
    -> ('1003','D001','电子,自动化类','2009.9.26','待审批'),
    -> ('1001','D001','电子,自动化类','2009.10.6','待审批'),
    -> ('1002','J002','计算机类','2008.7.24','通过');
在这里插入图片描述

在这里插入图片描述
10.查询要求得到所有专业号为1的男生的学生信息
mysql> select *from t_student where departmentid=1;
在这里插入图片描述
11.查询得到所有电子系男生的学生信息
select * from t_student where departmentid=1 and studentsex='男';
在这里插入图片描述
12.创建视图,显示学生所选课题还未通过审批的信息
mysql> create view v_nopass(studentid,dissertation,introduction,sendtime,state) as select * from t_s_dissertation where state='待审批
在这里插入图片描述
13.创建存储过程,通过指定专业,返回该专业所有学生的基本信息
mysql> delimiter //
mysql> create procedure p_department (in name char(50))
    -> begin
    -> select studentid,studentname,studentsex,studentphone,password from t_student where
    -> departmentid in(select departmentid from t_department where departmentname=name);
    ->  end 
 ->//
在这里插入图片描述
14.创建触发器,当某课题被删除时,选题表中相关记录也同时被删除
mysql> delimiter //
mysql> create trigger tr_drop after delete
    -> on t_dissertation for each row
    -> begin
    -> delete from t_s_dissertation where t_s_dissertation.dissertationid=old.dissertationid;
    -> end
-> //
在这里插入图片描述
15.建立数据库相关表之间的参照完整性约束,均设置为级联
AFTER TABLE t_student ADD FOREIGN KEY(departmentid) REFERENCES t_department(departmentid) on delete cascade on update cascade;
在这里插入图片描述
alter table t_s_dissertation add foreign key(studentid) references t_student(studentid) on delete cascade on update cascade;
在这里插入图片描述
alter table t_s_dissertation add foreign key(dissertationid) references t_dissertation(dissertationid) on delete cascade on update cascade;
在这里插入图片描述

第3章 课程设计心得

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的。主要收获由以下几点:
(1)回顾了这个学期以来所学的知识,发现了自身的不足和存在的问题。
(2)这是第一次完整的完成整个数据库的创建,懂得我们不仅要掌握理论知识,还更加应该锻炼自己的操作能力,才能更好的学以致用。
(3)在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。
(4)同时,培养了在实践过程中遇到问题后,应该寻找解决的办法的习惯,如借助网络或与同学交流等。
(5)通过这次实训,让我更能体会到数据库的强大与奇妙,以及功能的多样性。
在这次实训中,不仅收获了很多,同时也发现了自身存在的不足,需要改进的地方:
(1)对知识掌握的还不够牢固,上机操作能力还有待于提高。
(2)对数据库的认识仅局限于书本,而没有通过实际生活中去理解。
(3)对于一些查询语句不够熟悉,导致花费的时间较长
(4)对数据库得存储过程理解还不够深入
(5)今后应该多查询资料,把所存在得问题寻找原因并改正,学会学以致用。
(6)平时对遇到的问题没及时解决,导致问题一直存在。

第5章 参考文献

[1] 陈林琳,蒋丽丽,解二虎主编.SQL Server 2008数据库设计教程. 江苏大学出版社,2016年8月
[2]任进军,林海霞 主编 MySQL 数据库管理与开发 人民邮电出版社 2017年6月
[3]百度知道:https://www.unjs.com/fanwenwang/ziliao/590237.html
[4]百度百科:
http://www.360doc.com/content/16/1011/21/15549660_597691151.shtml
[5]百度知道:https://bbs.csdn.net/topics/390822588

致谢

你可能感兴趣的:(MySQL数据库课程设计)