项目名称:面向CG平台的推荐刷题系统

组名:知易行难

组员:蒋云涛、罗家培、陈星尧、黄芷若、曾靖

指导老师:李友焕

 

目录:

        一、背景

        二、数据库设计的重要性

        三、设计过程

        四、设计心得

 

一、背景

  CG系统是湖南大学信息科学与工程学院程序设计类课程教学辅助系统,学生可在此系统上提交编程作业、完成编程考试,老师可在此系统上发布编程作业、考试,批改作业、查看作业完成情况等。由于学生只能完成老师发布的编程题,无法做更多的题目,也无法得知目前的学习情况,现想设计一个面向用户的个性化题型推荐和用户学习进展可视化展示系统。

  该系统可根据学生当前学习进度和学习情况推荐练习的编程题和需要温习的知识点,同时可展示该学生的学习情况雷达图。学生可在题目下面进行评论,实现学生与老师之间的沟通交流。老师可登录该系统查看班级的学习情况雷达图,查看学生评论,也能对题库和账户进行管理。助教也可登录该系统管理学生账户和查看评论。管理员可对所有学生、老师、助教账户进行管理。期望在系统上线后,学生能针对性地学习,更高效地掌握知识,教师能及时了解学生学习情况,更好地进行教学。

 

二、数据库设计的重要性

   大多数的程序员对于软件开发的出发点认识不是很明确,总是认为实现功能才是重要的,在简单了解完基本需求后就急忙进入编码阶段,对于数据库设计思考的比较少、比较简单,大多设计都只停留在表面上,这往往是要命的,会为系统留下很多隐患。

  要么是写代码开发过程中才发现问题,要么就是系统上线运转后没多久就出现问题,还有可能给后期维护增加了很多工作量。如果到了那个时候再想修改数据库设计或进行优化等同于推翻重来。

   数据库的设计都是至关重要的,它关系到后端进行接口开发时实现的难度,数据库中数据的可维护性,一致性,以及是否会因为数据冗余太多导致系统性能较低等等。

  总的来说,在数据库的设计过程中,我们需要考虑各方面的因素。而详细认真的需求分析是数据库的设计中至关重要的一个环节,如果从需求分析阶段就开始模糊分析,在项目开发过程中将经常面临修改增加数据表中的字段,甚至需要新加数据表和修改表结构的情况,会严重影响项目开发进程。

 

三、设计过程

  我们的团队项目是面向CG平台的刷题推荐系统,虽然之前学过数据库设计,但是时间久远也忘的差不多了,所以也是处于边摸索边设计阶段。

  在第七周,我们设计出了数据库的最初版本,并画出了数据库的概念模型。

  在第八周,我们完成了数据库的设计,并编写了数据库设计文档的终稿。

 

 

 

 

四、设计心得

  在设计的过程中,是一种从没有过的感受,在没有设计过数据库之前,不会很在意每一个网页的数据应该如何存放,觉得没什么。等到自己动手去做,如何存放的合理且使用起来高效,也是一门学问。加深了我们对数据库系统设计相关知识、StarUML的使用以及MySQL相关功能的理解。

  在最初连接云服务器过程中,我们采用的是SSH方式的连接方法,但是一直报错,出现了像

localhost: ssh: connect to host localhost port 22: Connection refused,Access denied for user 'root'@'localhost' (using password: YES/NO) 这样的报错

  这些很逆天的问题,查资料查了几个晚上都没解决,之后在一个评论中看到,网上的解决方法大多针对 MySQL5.x 版本的,我们的云服务器数据库版本是 MySQL 8.0.30-0ubuntu0.20.04.2 (Ubuntu) ,很多sql语句都有变化,最后我们删除了原有管理员,并新建了一个管理员,把所有权限授予给所有主机,最终连接上数据库。

  表中的数据需要从CG平台导入,但是老师提供的数据有限,怎么办呢?只能通过工具去生成随机数据。

  我们使用的是navicat16的数据生成工具。但是这就带来了一个问题:数据库设计中大量引用了外键约束,大大限制了数据生成功能,解决方法一是取消所有外键约束,二是手动插入数据,但是前者在后期维护过程中可能会有意料之外的问题,后者的工作量又太大了。

  最终我们采用折中方法,保留外键,暂时先手动插入少量数据进行测试。

  总的来说,通过这次的数据库设计,从开始设计,到完善设计,到绘制ER图,概念模型等,巩固了我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高了我们综合运用所学知识的能力。

posted on 2022-11-03 15:05  裁冰  阅读(88)  评论(0编辑  收藏  举报