草庐IT

学生信息管理系统(数据库设计)

秃头小张哟 2023-04-14 原文

1 分析

1.1 业务分析:

学生信息管理系统是高校面向教师和学生设计的一个多功能数据管理平台,本篇文章针对学生信息管理系统的数据库进行分析。

1.2 系统分析:

(1)用户:学生,教师

(2)功能:学生和教师信息的增删查改,教师为学生学科成绩打分,学生查看学科对应的教师信息,学生查看自己的成绩等等。

1.2.1 学生用户

对于学生用户需要实现的功能有:

(1)学生查看自己的信息,进行增删改查处理;

(2)学生根据自己的课程编号,学号进行查询自己的成绩;

(3)学生查询课程信息和任课老师信息;

等等。

1.2.2 教师用户

对于教师用户需要实现的功能有:

(1)教师查看自己的信息,进行增删改查处理;

(2)教师查询学生信息

(3)教师根据课程编号给学生成绩;

(4)教师查询学生成绩的最高分,平均分;

2 构建模型

2.1 概念模型(ERP模型)

根据上述的学生信息管理系统功能分析,得到本系统需要的实体有:学生、教师、成绩、课程等,并根据系统所需的功能,分析实体所需要的属性,画出如下E-R图。

2.2.1 E-R图

2.2 数据模型

2.2.1 将ERP模型转化为关系模式

按照E-R图转换为关系模式的规则,将上述E-R图转换,得到的关系模式为:

学生(学生学号、姓名、年龄、性别、户籍);

教师(教师编号、姓名、年龄、性别、户籍);

课程(课程编号、课程名称、教师编号、课程时间);

成绩(课程编号、学生学号、分数);

2.2.3 设计表格

(1)学生表(student)

类型长度不是null注释
stu_idint20🔑学生学号
stu_namevarchar20学生姓名
stu_agevarchar20学生年龄
stu_gandervarchar10学生性别
stu_addressvarchar30学生户籍

(2)教师表(teacher)

类型长度不是null注释
tea_idint20🔑教师编号
tea_namevarchar20教师姓名
tea_intint20教师年龄
tea_gandervarchar10教师性别
tea_addressvachar20教师户籍

(3)课程表(course)

类型长度不是null注释
cour_idint20🔑课程编号
cour_namevarchar20课程姓名
tea_idvarchar20教师编号
cour_timedatatime225课程时间

(4)成绩表(score)

类型长度不是nullco
cour_idint20🔑课程编号
stu_idvarchar20🔑学生学号
sco_scorevarchar10分数

3 创建表格

由于表格的创建方法都大同小异,这里以学生表为例,创建学生表:

create table student(
stu_id int(20),
stu_name varchar(20),
stu_age varchar(20),
stu_gander varchar(10),
stu_address varchar(30),
primary key(stu_id));

创建成功截图如下:

4 插入数据

由于表格的插入数据的方法都大同小异,这里以学生表在学生表中添加学生信息为例:

这里在student表中添加了一条数据:

insert into student(stu_id,stu_name,stu_age,stu_gander,stu_address)
value(1002,'张一',18,'男','云南');

添加数据成功截图:

5 维护数据

5.1 查询学生所有信息

查询学生表信息代码如下:

select  stu_id 学号,stu_age 年龄,stu_name 姓名,stu_gander 性别,stu_address 户籍 from student;

运行结果如下

5.2 查询老师所有信息

查询代码如下:

select  tea_id 学号,tea_age 年龄,tea_name 姓名,tea_gander 性别,tea_address 户籍 from teacher;

运行结果如下

5.3 查询每门课程对应的老师信息

查询代码如下:

select 
teacher.tea_id 教师编号,
teacher.tea_name 教师姓名,
teacher.tea_age 教师年龄,
teacher.tea_address 教师户籍,
course.cour_id 课程编号,
course.cour_name 课程名称
from teacher 
join course on teacher.cou_id = course.cour_id;

运行结果如下

 

5.4 查询学号101同学的成绩

查询代码如下:

select 
student.stu_id 学生编号,
student.stu_name 学生姓名,
student.stu_age 学生年龄,
student.stu_address 学生户籍,
course.cour_id 课程编号,
course.cour_name 课程名称,
score.s_score 课程分数
from student 
join score 
on student.stu_id = score.stu_id
join course
on course.cour_id = score.cour_id
where student.stu_id = 1001;

运行结果如下

 

5.5 查询数学成绩表,并排名

查询代码如下:

select 
student.stu_id 学生编号,
student.stu_name 学生姓名,
student.stu_age 学生年龄,
student.stu_address 学生户籍,
course.cour_id 课程编号,
course.cour_name 课程名称,
score.s_score 课程分数
from student 
join score 
on student.stu_id = score.stu_id
join course
on course.cour_id = score.cour_id
where course.cour_id = 102
order by score.s_score desc;

运行结果如下

5.6 查询每门课程的最高分

查询代码如下:

select 
course.cour_id 课程编号,
course.cour_name 课程名称,
max(score.s_score) 课程最高分
from score 
join course 
on score.cour_id = course.cour_id
group by course.cour_name
order by course.cour_id asc;

运行结果如下

有关学生信息管理系统(数据库设计)的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  6. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  7. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  8. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  9. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  10. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

随机推荐