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

致谢

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容