首页 > 数据库 >数据库设计心得-4班-软小五比奇堡乐园队

数据库设计心得-4班-软小五比奇堡乐园队

时间:2022-11-04 08:00:26浏览次数:39  
标签:包含 数据库 用户 外键 软小五 添加 审核 比奇 心得

小组名

软小五比奇堡乐园

项目名

软件工程导论实践教学管理平台

小组成员

张凯航(PM)、李林畅、李佳豪、牟洺楷、张恩硕

数据库简介

数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。

用户通过数据库管理系统访问数据库中的数据。

数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。

数据库:存储、维护和管理数据的集合。

数据库整体设计

针对本次团队项目而言,由于各功能模块均与用户有关,同时又有一定的独立性,数据库的表可以分模块设计,而每个模块与用户表有关。

本设计包含以下模块:

  • 用户权限管理模块
  • 教材与进度管理模块
  • 教材工具编辑请求模块
  • 项目管理模块
  • 作业管理模块
  • 班级课程管理模块

数据库整体设计图如下:

可以看到,用户表居于中间位置,各模块相关表从左上角开始顺时针出现。

用户权限设计

用户权限设计已经有相对规范的一套体系,故应上网找相关资料来较合理地设计。
基本的表应包含用户表、角色表、权限表
管理权限时,通过为角色分配权限,为用户分配角色来达到给用户分配权限的目的。
故在基本的表上还应包含用户角色联系表,角色权限联系表。这两个表只需要一个主键,两个来自联系表的外键即可。

如需要分组管理,可以添加角色组表、权限组表以及对应的联系表
如需要查看分配日志,可以添加角色或权限联系的添加日志表
如需要记录登录日志,比如包含登陆方式时间等登陆相关的信息,可以添加登录表,将用户表细分,用户表包含用户信息,登陆表包含登录信息。
如有其他需要,可以在基础表之上添加其他的表。

以下是本组的用户权限管理表设计图,只选择了基础的表,向外的联系为用户表:

教材与进度管理设计

书籍管理

类似于书籍类的数据结构可以用树状结构存储,只需要为每个章或节添加编码,如书籍的第一个版本为1,第一个版本第一个章为1.1,第一个版本第一个章的第一个节为1.1.1,以此类推。

每个节点包含的内容类型应大体相同,如果不是叶节点,其内容也可作为本章或本节内容简介。

表设计应包含本节点包含内容,本节点编号,父节点编号。

进度管理

对于进度管理,可以为每个节点添加任务点,通过任务点的完成数量来实现进度管理,故应添加两个表:任务点表、任务点与用户联系表

任务点表应包含本任务点内容,如果有多种任务点类型,可以添加任务点类型条目,然后将所有种类应有的条目全部包含在表内;也可以每种类型分别设计表。

表设计应包含对应章节节点id,以及对应的任务点内容。

然后添加任务点与用户联系表,包含来自用户与任务点的外键即可。

以下是本项目的教材与进度管理设计图,向外联系为用户:

编辑请求设计

如果需要有权限的用户编辑某部分内容,有两种实现方式:

  • 一种是在该部分的表添加审核相关属性(上传时间、审核状态、审核通过时间、上传人、审核类型等),系统内置的条目的该属性可以为默认,也可以自定,由某用户上传的请求也存于该表。只有审核通过的条目可以展示出来。
  • 另一种是额外添加审核表,包含该部分的上传所需要的内容(原先的表会包含许多与审核无关的属性,如下载量等后续才会补充的内容)与审核相关属性。如果该审核通过,将该审核包含的内容添加到原有的表中。展示时直接展示原有的表所有条目。

以下为项目与项目审核表设计,向外联系用户:

如果审核的内容有较大区分,可以添加不同类型的审核内容表。审核表包含审核基本信息,不包含内容,不同类型审核内容表包含对应的内容,包含来自于审核表的外键。

以下为教材审核表,审核内容分为教材内容与任务点内容,向外联系用户:

课程班级设计

设计思路如下:

  • 行政班级并不重要,仅放在用户表中作为用户属性
  • 教学班级表:每个教学班级包含多个课程
  • 课程表:包含来自教学班级的外键
  • enroll表:联系教学班级、教师、学生的表,包含三部分的外键

如需要包含其他信息,如学校等,可以对某个表额外添加外键,但事实上仅为方便,类似于学校的信息可以通过与用户表与学校表的链接获取。

以下为该部分的表设计,向外的表大部分为用户表,表内表现为外键,少部分为与该部分相关的表,表内无外键:

补充

表之间关系

两张表一共四种:一对一、一对多、多对一、多对多
但是个人不建议两个表之间用多对多的关系,如有需要,在两表之前添加联系表,包含该表主键、来自两个表的外键。

这样的话,甚至可以联系多张表,只需要添加相关表的外键即可,见班级课程表的enroll表设计,如果学生与教师为两张表(不建议),就实现了三张表(教学班级、学生、教师)的联系。

主键设计

本数据库设计的主键均为bigint类型,为自增主键。但是有一种说法是不建议使用自增主键,测试的时候不方便以及缺乏意义,如果可以的话,建议采用包含意义的主键设计,此时需要注意主键的唯一性、外键引用的规范性等一系列问题。

命名方式

网上现有多种命名方式,表前缀、功能前缀、大小写规定等。
本设计采用以下规则:

  • 蛇形命名法,单词见用下划线('_')链接
  • 字母均大写,未来的sql的其他语句用小写
  • 表名前加前缀T_
  • 属性名加表名作为前缀,不包含T_
  • 外键与对应表主键命名相同
  • 名词过长时用缩写,如角色权限联系表T_ROLE_PERMISSION_RELATION简写为T_RP_RELATION,但是一定要写注释

标签:包含,数据库,用户,外键,软小五,添加,审核,比奇,心得
From: https://www.cnblogs.com/BEZI-blog/p/16853839.html

相关文章

  • MyBatis初学心得和收获总结
    首先MyBatis是一个优秀的大型持久层框架,用于简化JDBC的开发,javaee分为表现层、业务层和持久层三层架构。框架是一个半成品软件。利用MyBatis可以简化JDBC的书写,在后续的开......
  • 数据库设计心得-4班ok_fine_goodnight组
    数据库系统设计心得_ok_fine_goodnight引言首先为什么要设计数据库:当数据库比较复杂(如数据量大,表较多,业务关系复杂)时,我们需要先设计数据库.一个好的数据库设计能保......
  • 网友心得—运行jeecgboot-vue3项目可能出现的问题
    运行jeecgboot-vue3项目可能出现的问题1.执行pnpminstall的时候报错ERR_PNPM_INVALID_OVERRIDE_SELECTOR Cannotparsethe"//"selectorintheoverrides​ 翻......
  • 2022.10代码大全阅读心得1
    第11章:变量名的力量问题:怎样给一个变量命名?长名字还是短名字?命名的最佳实践有哪些?有哪些常见的命名方法?在命名中应该要避免的东西有哪些?怎样给一个变量命名?通......
  • 2022.10代码大全阅读心得2
    第十四章组织直线型代码14.1必须有明确顺序的代码对于具有明显的顺序关系的代码,应该使用顺序结构。对于隐含的顺序关系,应该:去除不合理的依赖关系(如不应该在Calculat......
  • 第六章学习心得
    知识点归纳信号和信号处理;信号和中断的统一处理将信号视为进程中断,将进程从正常执行转移到信号处理信号的来源,包括来自硬件、异常和其他进程的信号信号在Unix/Linux......
  • 赛后心得
    这一打比赛属实艰难啊被疫情整的心烦。但收获也不小,正好zy让我们写心得,那我就写一下吧!毕竟是第一次参加CSP_J,当时还蛮紧张的。T1:  第一时间想到快速幂,脑子卡住了,想......
  • 10月心得体会分享
    这个月继续学习了Linux,学到了磁盘分区,挂载挂载是Linux文件系统中很重要的概念,除了根文件系统,其他所有文件系统都要先挂载到根文件系统中的某个目录之后才能访问。Linux无......
  • 使用Three.js 心得系列一 如何创建三维网格三、使用Three.js 心得系列三 Three.js 如
    一、使用Three.js心得系列一如何创建三维网格二、使用Three.js心得系列二如何改变三维场景的GlTF模型的位置三、使用Three.js心得系列三Three.js如何加载GlTF文件 ......
  • 10月心得体会分享
    这两周学习了Hadoop的一些基本知识,了解到Hadoop的两大核心组件是HDFS,MapReduce。他们用于解决实现海量数据的分布式存储和实现海量数据分布式处理。了解到Hadoop的特点1........