首页 > 数据库 >高校招生录取系统--数据库设计心得

高校招生录取系统--数据库设计心得

时间:2022-11-04 18:11:23浏览次数:40  
标签:-- 系统 数据库 实体 招生 设计 心得 属性

数据库设计心得

项目介绍

高效招生录取系统,主要功能为招生信息的管理与处理,至少要包含两个部分:客户端的招生录取系统以及基于WEB的招生信息发布以及查询系统。

团队介绍

项目名称:高校招生录取系统

指导老师:李军义

团队名称:键盘侠

小组成员: 梁晨星 魏润楷 李增智 哈斯铁尔

数据库设计回顾

1.实体及其属性的设计

(1)用户实体作为系统的最重要的实体,设计过程中遇到不少困难,比如如何通过角色编号对不同用户进行赋权、增加了用户是否锁定的属性,对于我们的特殊用户关注者还必须考虑到其与其所关注考生的关系。

(2)考生实体是属性最多,功能中信息处理的最多的实体,设计中考虑最多的还是其众多属性的取舍,最终为了更加严谨且符合要求,我们添加了其拥有的非常多的信息作为其属性。

(3)招生计划、信息入库、分班配置等实体涉及到主要功能。设计重心集中到与各个功能以及所相关的实体的关联。

(4)错误类型、登录日志、修改日志等全部是以日志记录为主的实体,主要设计是谁(用户)在什么时候(时间)做了什么事情(事件)。

2.概念模型、逻辑模型、物理模型

这部分主要进行的其实是E-R图的设计。设计的顺利与否直接与实体及属性设计相关。

(1)基于实体及属性设计出概念模型的过程中,会因为实体和属性的不完整、不严谨等遇到对应的困难。主要的修改有不必要属性的舍弃、不必要关系实体的舍弃、单个独立表的增加。

(2)由概念模型生成逻辑模型的过程中,最终要的是外键的设计、多个表之间的关联。期间出现的错误有,多余的字段的生成,多余的表之间的联系的生成。需要进行相应的修改。

(3)逻辑模型生成物理模型已经到数据库设计的最后关头,为了实现可用的物理模型,需要对字段的命名、表之间的关联进行修改。

3.SQL语句的生成与修改

数据库使用的是Mysql,生成的sql语句为mysql语法。

主要是主外键的设计,表之间的关联依靠主外键,主外键的命名也会导致语句的生成有差错,进而导致生成的表失去了应有的关联,主要的修改在于字段的命名。

数据库设计中遇到的具体问题(涉及到具体功能)

(1)在初步进行数据库设计时对于数据安全性的考虑有所欠缺,一开始的思路是每个功能中要展示的数据都直接从字段所在表格中获取即可,经过指导老师指出问题后,为部分功能单独创建了表格并将需要的数据放入其中,需要时直接从对应表格中获取,不去访问到其他数据,保证了其他数据的安全性

(2)起初在对字段进行命名时采用了’表名_属性’的命名方式,为了方便后续编码中的使用,将字段命名方式修改为只有属性名的形式,一个属性的两个单词之间采用‘_’进行连接且字母全为小写的形式

(3)招生系统中具有非常多的代表属性具体含义的编号(专业代码……),初步设计数据库时为这些字段的id和对应的具体含义根据不同类型都分别创建了表格,使得数据库中表格过多,造成了冗余的现象,后在改进数据库时加入了一个字典表,在字典表中直接存储这些信息减少了多余的表格

(4)初步设计数据库时并不能体现出系统具有分班功能,忽略了分班配置表的存在,后续添加了分班配置表存储班级的人数、男女比例等信息来体现这一功能

(5)计划调整在招生系统中属于较为重要的操作,因此对于这一操作需要有明确的日志表对其进行记录,初步设计时并没有设计一个表格来存储具体的调整信息,后补充了一个调整计划日志表用于存储每一次进行改动的用户、具体改动的计划、改动前后的人数等信息使得该操作在系统内部公开透明,方便后续的调整

心得与体会

 (1)合作与沟通

对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。我们组这次要完成的项目是高校招生录取系统,因为本项目中涉及的表比较多,各表之间关联性较大,而且每个表尤其是其中的考生表涉及的字段较多,所以对我们来说还是有一定难度和挑战的。因为考虑到每位组员都会有不同的意见和建议,所以创建表的过程我们是以组为单位一起进行的。

(2)选择高效开发工具

一个好的数据库设计工具是提高效率,降低工作量的良好选择。我们组选择的是powerdesigner工具。powerdesigner这种可以通过绘制CDM可以转化为PDM,大大提高了我们的设计效率。

(3)与老师进行沟通

我们将初步设计好的数据库给老师审核,通过组会,老师给我们检出某些表,合并其中一下表已经添加表字段,老师纠正我们数据库的同时,我们对项目的需求有了更加深刻的理解。

(4)总结

在数据库设计上,我们小组花了大量精力,我们先确认出实体类,再根据实体类分析出需要的表,数据库的设计要尽量符合范式、减少数据冗余、表与表间的联系要准确,但是再与老师交流之后,为了加强数据安全性,我们还是要独立出一部分表,虽然这些表不符合范式,但是确实提高了数据安全性。

标签:--,系统,数据库,实体,招生,设计,心得,属性
From: https://www.cnblogs.com/stardustCc/p/16858536.html

相关文章

  • 19. Spring之AOP
    一、AOP概述  AOP(AspectOrientedProgramming)是一种设计模式,是软件设计领域中的面向切面编程(方面)。它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态......
  • 高手是这样排查问题的——两层使用存储过程批量生成单据和查询分析器生成单据都正确,使
    问题描述:在两层的情况下,使用存储过程批量生成单据时,正确在查询分析器中,直接使用代码执行存储过程时,正确在三层的情况下,使用存储过程批量生成单据时,错误 问题查找:1、......
  • grafana jpprof 使用的一些问题
    容器运行版本问题如下图  可以看出使用的也是基于libasyncProfiler所以容器运行环境本地比较重要,parcajava解决方案也是使用了类似的技术(alpine镜像就比较费......
  • 软件项目管理期末考题
    一、选择题(该题型20分)1、软件项目管理的特殊性主要表现在目标渐进性、创新性、( C )、智力密集型。A.低风险性 B.共享困难 C.高风险性 D.应用关联2、项目沟通的要素包括......
  • python 虚拟机框架-运行时环境初探
    在Python中,关于线程状态信息的抽象是通过PyThreadState对象来实现的,一个线程将拥有一个PyThrasdState对象。所以从另一种意义来说,这个PyThreadState对象也可以看成是对线程......
  • 对于邻接表的认识和学习心得
    存图的方式有两种:一.邻接矩阵法(或关联矩阵)就是一个简单的整数型二维数组。二.邻接表法(重点讲解)它是一种顺序存储(结构体数组)和链式存储(链表)结合的存储方法,它......
  • 一文搞懂 SAE 日志采集架构
    简介: 本文将着重介绍了SAE提供了多种日志采集方案,以及相关的架构,场景使用特点,点击下文,立即查看吧~作者:牛通(奇卫) 日志,对于一个程序的重要程度不言而喻。无......
  • grafana phlare 试用
    主要是简单试用下grafanaphlare环境准备docker-compose文件version:'3'services:phlare:image:grafana/phlare:latestports:......
  • C# HttpClient请求gzip
    //设置HttpClientHandler的AutomaticDecompressionvarhandler=newHttpClientHandler(){AutomaticDecompression=DecompressionMethods.GZip};//创建HttpClient(......
  • 电脑连接手机热点 | 如何手动设置固定ip | 手机访问电脑资源
    手机开启热点,电脑连接后的ip一般是DHCP分配好了的,但是如果我们想要自己手动设置ip呢?打开wifi属性这里动态分配的ip是192.168.10.69那我们想设置成192.168.10.1呢如......