数据库 表设计案例+经验 [vaynexiao]

汽车租赁系统

在这里插入图片描述

在这里插入图片描述

学生课程管理系统

需求: 学校每个班级的学生,每学期至少完成4门主修课和1~2门的选修课。设计表结构,存储学生的课程学习信息和成绩信息。

多对多的表设计
多个学生对应多个课程,就需要一个额外的《对应关系表》,来记录每个学生选择的多个课程。简称:中间表,只为存储对应关系

在这里插入图片描述

学校设备管理系统

在这里插入图片描述

租房系统

在这里插入图片描述

外卖系统

在这里插入图片描述

会议室管理

在这里插入图片描述

物流系统

在这里插入图片描述

学校考试系统

在这里插入图片描述

用户管理

与 题目相关的表 关系不是那么密切,可以独立出来
在这里插入图片描述

题库中新增试题

字段包括:课程分类,知识点分类,题型分类,答案

  • 课程表
  • 知识点表 (每个知识点对应一个课程,关联关系)
  • 题型表(分为主观题+客观题,客观题分为:单选题、多选题、填空题、简答题)
  • 题库表(保存题目具体题干,包括:提干内容、答案、答案解析、图片url、题目状态【可用+不可用】)
  • 选项表(针对选择题专门单独出来的表,一个题干有对应多个选项,顺序使用序号字段保存,1234对应ABCD)
  • 题目 知识点 关系表 (一个知识点有多个对应题目,一个题目可以对应多个题目,多对多)
    在这里插入图片描述

生成试卷,选择题目

  • 试卷信息表:要指定所属班级,出题人,
  • 试卷题目信息表:根据题型+知识点从题库中过滤题目,然后选择需要的题目。
    这样每个题都会关联该套试卷,每道题还要设置题号,依照题号排序显示。
    在这里插入图片描述

组织考试

设置考试名称(选择哪一门课程)
选择考试时间、日期,然后才能发出通知
选择具体使用哪一套试卷,包括历史试卷
选择参加考试班级
选择阅卷老师

  • 组织考试表
  • 阅卷权限表
    在这里插入图片描述

开始考试

  • 考生答卷信息表:表示哪位学生考了哪次考试,包括答卷id,试卷id,老师id,学生id,总得分
  • 考生答案组成表:详细记录该考生所有答案,试题id+答案内容,阅卷老师输入主观题得分

教师阅卷

  • 教师阅卷权限表:有权限就可以查看得分具体情况,也可以二次修改阅卷情况。

系统权限设计思路

简单系统

简单,指的是系统中用户需要区分的权限很少,且用户进入系统后不需要进行具体模块的权限区分,
只有普通用户、管理员两种,那么将普通用户单独建表,管理员单独建表,登录时判断属于哪种用户;
也可以增加vip用户,在普通用户表里增加字段区分是否vip,或者单独建表存vip用户信息。
在这里插入图片描述

中型系统

稍微大点的系统其中角色很多种,不止上面提到的3种,可能有几十种,这时候就需要单独建表保存所有角色,然后每个角色可以配置多个权限,达到对系统中模块的权限划分。
在每个模块中具体按钮或者页面,总之就是功能的入口处会判断当前角色是否有权限来决定是否让用户进入功能。
在这里插入图片描述

复杂系统

最复杂的系统与中型系统主要区别就是,可能每个用户拥有的角色数量不同,身兼多职,就需要多个模块的权限,
使用用户角色表、角色权限表关联查出拥有的权限;
可能个别用户拥有个别模块的这种特殊权限。
两种权限union起来就是该用户所有权限。
与中型系统表设计最大重点区别就是增加了《用户角色表》来保证单个用户可以拥有多个角色;增加了《角色权限表》保证单个用户的特护权限。
在这里插入图片描述

流程变更表设计

假设有个填写个人履历流程(或者叫电子流,类似一个申请表,要逐级递交上去,层层审批的过程);
流程有一个唯一id,以及其他业务数据,数据库表中数据例如:

order_id   name    birthday   ....
p0001  Alice  2022-01-24   ....

填写粗心数据有误,就需要有一个变更流程;变更生日数据时大致类似:

order_id   name    birthday   ....
p0001  Alice  2022-01-23   ....

问题就是,要保留变更前后的所有数据,不能直接update数据库数据。

第1种方法:
变更流程是一种新的独立的流程,数据如下:注意独立流程,单号就不一样了,c开头

order_id   name    new-birthday    old-birthday   ....
c0001  Alice  2022-01-23    2022-01-23   ....

这种可以达到目的,但是一条记录数据字段有上百个呢,每一个都要建立新的字段xxx-new xxx-old吗?

第2种方法:

order_id   name    date  ....   last_order_id   单号还是老格式,p开头
p0001  Alice  2022-01-23  .... c0001

本条数据保存的内容与请假流程一致, 公用一个表,新加一个字段 last_id 来关联 填写个人履历流程,这样只需要一个字段,就可以保存关联关系,数据也是最小化

第3种方法:
如果变更了10次呢,这样方法2就形成找父关系的关系链,数据一多,sql难写,维护难,各种问题;
所以此时 数据冗余 换取 逻辑清晰
变更表 不和 填写个人履历流程表 还是不共用,建立新表,数据如下:

id     name     birthday     order_version
c0001    Alice    2022-01-24     old
c0001    Alice    2022-01-23     v1

这样通过变更单号就找到2条,通过order_version区分谁是原始数据,谁是变更数据,变更多次的话,版本号累加即可:

id     name     birthday     ....    order_version
c0001    Alice    2022-01-24     ...    old
c0001    Alice    2022-01-23     ...    v1
c0001    Alice    2022-01-22     ...    v2

回过头再来看,数据可能存了好多,name字段十分数据冗余,但是找关系,写逻辑很清晰呀,这就是 数据冗余 换取 逻辑清晰,当然也可以反过来。

  • 13
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库课程设计mysql+python是一门将MySQL和Python结合起来进行数据库设计的课程。学生将学习如何使用Python编写代码来连接MySQL数据库,并使用SQL语言进行数据查询、插入、更新和删除等操作。此外,学生还将学习如何设计数据库模式、结构和索引等基本概念,以及如何使用Python编写脚本来自动化数据库管理任务。这门课程对于想要成为数据库开发人员或数据科学家的学生来说是非常有用的。 ### 回答2: 数据库是许多计算机专业需要学习的重要课程之一。在数据库课程中,学生需要学习使用不同的数据库管理系统以及如何设计和管理数据库系统。MySQL和Python是这两个方面中最受欢迎的工具之一。 MySQL是一种开源的关系型数据库管理系统,使用SQL语言。学生可以通过学习MySQL来掌握基本的数据库概念和技巧。MySQL提供可扩展性和高性能,因此非常适用于大规模的数据处理。学生可以使用MySQL来创建和管理数据库,为数据库添加数据和查询数据。 Python是一种流行的编程语言,也被广泛用于数据库管理。Python提供了许多用于编写数据库应用程序的库和框架。这使得Python成为处理数据库的有力工具。学生可以利用Python编写脚本和程序来连接数据库,并创建和执行查询。Python还提供了许多有用的工具和库,例如Pandas和NumPy,可以用来在Python中更方便地处理数据。 在数据库课程中,学生将学习如何设计数据库系统,包括数据建模和规范化,以及如何使用SQL语言来查询数据库。学生还将学习如何使用Python来连接和管理数据库系统。在课程的最后,学生将完成一个数据库项目,他们将使用MySQL和Python来设计和实现一个完整的数据库系统。这个项目将会提升学生实际操作的能力,让学生更好地掌握数据库的知识和应用技巧,为未来的职业发展提供更好的保障。 ### 回答3: 作为一个普遍使用的数据库管理系统,MySQL是许多数据驱动应用程序的首选,因此,掌握MySQL成为计算机专业学生的必修课程之一。在学习MySQL时,Python也是一个常用的编程语言。因此,将这两者结合起来研究,可以促进学生的综合学习。 数据库课程设计的主要任务是设计和实现一个完整的数据库系统。在本课程设计中,我们将使用MySQL和Python实现一个简单但有用的数据库应用程序。首先,我们需要掌握MySQL数据库的基础知识,如数据库的结构、和列、数据类型、索引和关系等。同时,需要学习MySQL的管理工具如MySQL Workbench,以及SQL语言的基本概念和语法。 接下来,我们将使用Python编写程序,完成与MySQL数据库的交互。Python提供了MySQL的连接库,我们可以通过这个库来调用各种MySQL API函数,包括连接数据库、查询、插入、更新和删除数据等。通过Python编写的程序,我们可以快速、准确地操作MySQL数据库,完成复杂的数据处理任务。 最后,我们将设计一个实际的数据库应用程序,例如一个新闻发布系统,一个博客网站,或者一个在线商店等。这个应用程序将利用我们学习到的MySQL和Python知识,从数据库中读取信息,展示给用户,并且对用户的输入数据进行处理,存储到数据库中。通过这个项目,我们可以实践运用MySQL和Python技术,体验开发一个完整的数据库应用程序的过程。 综上所述,学习数据库课程设计MySQL和Python可以对计算机专业学生的编程和数据库管理能力进行有效提升,为日后的事业发展打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值