在一个为期两周的时间里进行了一次完整的数据库设计的过程,不敢说自己有多大进步,获得多少知识,但起码了解了以后项目开发所需要数据库创建的基本内容。这次设计中有许多是老师一次次的实验课所讲内容的总结,还有自己没有接触的知识也通过查询资料学了,收获很大。
在这分享给博主们,有问题可以指出!!!!
文章目录
1引言
1.1课题研究的意义
2 需求分析
2.1系统需求分析
2.2系统功能需求分析
3概念结构设计
3.1抽象出系统的实体
3.1.1各基本实体集的属性定义如下
3.1.2根据实体属性画出E-R图
3.2设计总的E-R图
3.2.1定义联系集及属性
3.2.2全局E-R图
4逻辑结构设计
4.1 E-R图转换关系模式
5、数据库物理设计与实施
5.1 创建数据库
5.2建立和管理基本表
5.2.1建立基本表
5.2.2 管理基本表
5.3 建立和管理视图
5.3.1 建立视图
5.3.2 管理视图
6 访问数据库
6.1 数据添加
6.2 数据查询
6.3数据跟新
7 数据库维护
7.1备份数据库
7.2创建触发器
1引言
随着当代大学生越来越多,毕业设计选题的种类也越来越丰富,并且也要面对学生多老师少等难题。每当一个老师面对多个学生的设计题目,由于数据大,操作麻烦,会非常浪费毕业生和老师的时间。现在我们正处于信息发达的时代,我们应该利用当前技术建立一个题目数据库,这样工作会便捷、高效。
1.1课题研究的意义
建立毕业设计选题系统,这样可以满足教师和学生的双向选择,即老师可以选择学生,学生也可以选择自己的老师。系统给教师的权限是可以增加或者减少题目、查看自己带的多少个学生以及一些基本信息,学生的权限是选择题目、浏览教师题目以及教师的简介信息。这样条理清晰的进行,保证了学生信息的流畅,同时也避免了复杂的管理。
2 需求分析
2.1系统需求分析
随着互联网的发展,计算机的软硬件不断的更新迭代,这时计算机已经可以管理超大规模的数据,文件系统远远不能满足各种应用的需求,数据库使得数据实现了结构化存储,数据更容易被共享。数据库管理系统既便于数据的集中管理,控制冗余,提高数据的利用率和一致性,又利于应用程序的开发和维护。
随着高校学生人数越来越多,课程越来越丰富,学生多老师少,迫切需要一个数据库管理系统来管理、存取大量的信息,则建立一个学生毕业设计选题系统具有非常大的实际应用意义。我们知道计算机具有运算速度快,处理能力强等特点。因此,为了保证学校信息的流畅,工作高效,学生毕业设计选题系统应运而生。这不但能使教务人员从复杂的管理中解脱出来,而且对于推动教学的发展也起到非常重要的作用。
2.2系统功能需求分析
教师和学生进行双向选择,即学生可选择相应的毕业设计题目,教师也可选择学生。
教师:
- 教师可以增加毕业设计题目,人数及要求。
- 教师可录取报名的学生,查看学生的详细信息如学生的基本信息等内容。
- 针对不同的用户,可进行相关的统计、查询可查看报自己的学生人数,基本信息等。
2)学生: - 可浏览教师的毕业设计题目及教师的简介等内容。
- 可查看自己的个人信息(基本信息)。
- 可以报毕业设计题目,每人限报两个,第一选题志愿和第二选题志愿。
3)管理员: - 可对每个教师、学生进行统计分析与维护。
3概念结构设计
3.1抽象出系统的实体
根据前面的需求分析,可以将毕业设计选题系统的数据库实体集划分为:学生实体集、教师实体集、管理员实体集、题目实体集、班级实体集、专业实体集和学院实体集七个实体。
3.1.1各基本实体集的属性定义如下
1)学生(student):学号(sno)、姓名(sname)、性别(sex)、出生日期(birthday)、籍贯(native)、民族(nation)等。
2)教师(teacher):教师编号(teano)、姓名(teaname)、性别(sex)、学位(degree).
3)班级(class):班级编号(cno)、班级名称(cname)等。
4)专业(major):专业编号(mno)、专业名称(mname)等。
5)学院(institute):学院编号(ino)、学院名称(iname)等。
6)题目(title):题目编号(tno)、题目名称(tname)、要求(requ)、人数(pop)等。
7)管理员(manager):工号(maon)、姓名(maname)、性别(sex)、联系方式(pho)等。
3.1.2根据实体属性画出E-R图
如图3-1、3-2、3-3、3-4、3-5、3-6、3-7,并在图中标出主键(加下划线的属性)
3.2设计总的E-R图
根据需求分析,可以知道各个实体之间存在一定的联系。
3.2.1定义联系集及属性
1)选题(selecttitle):它是题目实体集和学生实体集的一对多联系集,属性:题目编号(tno)、学号(sno)、教师编号(teano)、指导(wish)、指导情况(admission)等。
2)出题(settitle):它是教师实体集与题目实体集之间的一对多联系集。无属性。
3)指导(guidance):它是教师实体集与学生实体集的一对多的联系集。无属性。
4)包含(include):它是班级实体集与学生实体集的一对多的联系集。无属性。
5)拥有(hold):它是班级实体集与学生实体集的一对多的联系集。无属性。
6)属于(belong):它是学院实体集与教师实体集的一对多的联系集。无属性。
7)设置(establish):它是学院实体集与专业实体集的一对多的联系集。无属性。
8)权限设置:用户(user):账号(uno)、登陆密码(password)、姓名(uname)、身份(id)等。
3.2.2全局E-R图
4逻辑结构设计
逻辑结构设计是将概念结构转换为某个 DBMS 所支持的数据模型,并对其进行优化。((下划线加粗代表主码,斜体加粗代表外码 )
4.1 E-R图转换关系模式
(1)学生student(sno,sname,sex,birthday,native,nation,cno);分析student关系模式得函数依赖关系为:sno->{sname,sex,birthday,native,nation,cno}满足BCNF范式。
(2)教师teacher(teano,teaname,sex,degree,ino);分析teacher关系模式得函数依赖关系为:teano->{teaname,sex,degree,ino}满足BCNF范式。
(3)班级class(cno,cname,mno)分析class关系模式得函数依赖关系为:cno->{cname,mno}满足BCNF范式。
(4)专业major(mno,mname,ino);分析major关系模式得函数依赖关系为:mno->{mname,ino}满足BCNF范式。
(5)学院institute(ino,iname);分析institute关系模式得函数依赖关系为:ino->{iname}满足BCNF范式。
(6)题目title(tno,tname,requ,pop,teano);分析title关系模式得函数依赖关系为:tno->{tname,requ,pop,teano},满足BCNF范式。
5、数据库物理设计与实施
为上一阶段的关系模型选取一个最适合的应用要求的物理结构,即确定存取方法和存储结构。在实际问题中最常用的存取方法是索引,使用索引可以大大减少数据的查询时间。而存储结构的方式是访问尽量在同一个磁盘上。
5.1 创建数据库
5.2建立和管理基本表
5.2.1建立基本表
学生student(sno,sname,sex,birthday,native,nation,cno)
教师teacher表:(teano,teaname,sex,degree,ino)
班级class表:(cno,cname,mon)
专业major表:(mon,mname,ino)
学院institute表:(ino,iname)
题目title表:(tno,tname,requ,pop,teano)
管理员manager表:(mano,maname,sex,pho)
选题selecttitle表:(tno,sno,teano,wish,admission)
用户user表:(uno,password,uname,id)
5.2.2 管理基本表
有时候应用环境和应用需求的改变,我们需要修改已经建立好的基本表的模式结构或者更新已经插入的数据。Mysql语句采用ALTER TABLE<>语句修改基本表的结构,利用DROP<>子句删除基本表,利用UPDATE更新已经插入的数据。ALTER TABLE语句以修改基本表的名字,增加新列或者增加新的完整性约束条件,修改原有列的定义,包括修改列名和数据类型等。DEOP子句用于删除指定的完整性约束条件。UPDATE用于把插入表的数据更新改变。
如下例子:
Eg1:把class表名改为stu_class表名:
Eg2:把class表中的cname的长度由20改为长度为30:
5.3 建立和管理视图
5.3.1 建立视图
数据库中的视图是常用的数据对象,它用于定义数据库某类用户的外模式。通过创建视图,可以限制不同的用户查看不同的信息,屏蔽用户不关心的或者不因你该看到的信息。
视图是从一个会多个基本表中导出来的表,它与基本表不同,是一个虚表,其数据不单度保存在一个基本文件中,任然保存在导出视图的基本标文件中,任然保存在导出视图的基本表中,数据库系统中只保存视图的定义,视图一经定义,就和基本表一样,可以关系,可以进行基本的操作如查询、删除等。
Eg1:为籍贯是河南的学生建立视图:
5.3.2 管理视图
Eg1:将视图中的武松的性别改成女:
Eg2:查询视图性别是女的姓名:
6 访问数据库
6.1 数据添加
class表数据如下:
institute表数据如下:
major表数据如下:
manager表数据如下:
selecttitle表数据如下:
student表数据如下:
teacher表数据如下:
title表数据如下:
user表数据如下:
6.2 数据查询
数据查询是数据库的核心操作,select语句进行数据库查询,该语句具有灵活的使用方式和功能。
Eg1:查询学生的基本信息及期望的指导老师:
Eg2:查询教师的基本信息及题目:
Eg3:查询用户的姓名、性别、籍贯及密码:
6.3数据跟新
Eg1:把student表中的武松性别改为男,出生日趋为2000-1-1,籍贯改为山东:
更新完如下:
7 数据库维护
数据库维护包括许多内容,包括用户权限的设置、数据库完整性维护、数据库的备份、表的备份、日志备份等。
7.1备份数据库
1)完整备份:备份整个数据库的所有内容,包括事务日志。该备份类型需要比较大的存储空间来存储备份文件,备份时间也比较长,在还原数据的时候也需要一个备份文件。
2)差异备份:它是完整备份的补充,差异备份只备份上次完整备份后更改的数据。由于差异备份数据量小、备份的速度也快,所以数据库管理员经常采用的是一次完整性备份之后,进行多次差异备份。
3)备份截图:
7.2创建触发器
触发器是数据库中一种确保数据完整性的方法,同时也是DBMS执行特殊类型的存储过程,触发器都定义在基本表上,每个基本操作可以为插入、删除、修改3种操作定义触发器,即insert触发器、update触发器、delete触发器,对于这些基本的操作保证不会破坏数据的完整性。
为institute创建触发器stu_on_institute,保存的表为stu_institute:
1)创建触发器之前为空:
3)在institute新插入的数据就会自动触发保存到stu_institute中:
附录:创建基本表命令:
CREATE TABLE `manager` (
`mno` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '管理员编号',
`mname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
`sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
`pho` varchar(13) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系方式',
PRIMARY KEY (`mno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
mysql> CREATE TABLE `class` (
`cno` char(8) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班级编号',
`cname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班级名称',
`mno` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业编号',
PRIMARY KEY (`cno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `institute` (
`ino` char(3) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学院编号',
`iname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学院名称',
PRIMARY KEY (`ino`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `selecttitle` (
`tno` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '题目编号',
`sno` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',
`teano` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '教师编号',
`wish` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '指导老师',
`admission` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '录取情况',
PRIMARY KEY (`tno`, `sno`, `teano`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `major` (
`mno` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '专业编号',
`mname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '专业名称',
`ino` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学院编号',
PRIMARY KEY (`mno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `student` (
`sno` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',
`sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
`sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
`birthday` date NULL DEFAULT NULL COMMENT '出生日期',
`native` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '籍贯',
`nation` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '民族',
`cno` char(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班级编号',
PRIMARY KEY (`sno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `title` (
`tno` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '题目编号',
`tname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '题目名称',
`requ` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '要求',
`pop` int(11) NULL DEFAULT NULL COMMENT '人数',
`teano` varchar(6) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教师编号',
PRIMARY KEY (`tno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `user` (
`uno` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '账号',
`password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
`uname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称',
`id` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '身份:学生、教师、管理员',
PRIMARY KEY (`uno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;