• mysql 从入门到放弃— 数据库设计


    之前我们已经了解了 mysql 的基本增删改查 mysql 从入门到放弃——基本约束以及语法

    现在我们系统的进行一遍数据库的设计,建议收藏 ~~

    直接进入主题

    来个例子:下面我们将围绕这个例子来进行数据库的设计

    我们就来简单的模拟 大学教务处的选课 系统 中的 选课功能

    注意:简单的模拟,功能可能想到的没那么完善,不要杠我

    一、概念设计

    什么是概念设计呢, 简单来说就是一些 E-R 图 ,实体之间的联系

    现在我们来分析一下,简易的 选课系统,有哪些主体,说人话就是有哪些对象

    首先:

    选课,选课 肯定有 课程信息 的 主体 ,不然选了个寂寞,主要属性 课程名称、课程号、课程类别 、学分 等等,我们这边就不列那么多了

    其次

    课程谁录进去?就算是批量导入也会有操作者,这里就 认为是老师自己录进去的了,那就有一个 主体是老师信息,其属性有:教工号、姓名、性别、职称

    再者

    选课应该是学生去选课,这就有了学生信息这个主体,其属性有:学号、姓名、性别、年龄、专业班级

    品一品他们之间的关系,E-R图 就出来了

    1. 老师跟课程的关系是什么?

    一般情况来说,一个老师可以上多门课程,一门课程只能让一个老师上,不要说 (不同班,都是 名字是 微积分 的课程,但是是 两个老师在上) ,其实这里只是课程同名,他们的id 不同,是两个不同的对象

    所以老师跟课程的关系 为 1对多

    2. 学生跟课程的关系是什么?

    一个学生可以选择多门课程,一个课程也可以被多名学生选择,因此,这边学生 跟 课程的关系是 多对多

    3. 学生跟老师有没有关系呢?

    当然有,但并不是主要的,毕竟我们是选课功能,主要选的是课程,并不是选老师、(还没到研究生选导师环节)我们这边可以根据课程信息进行间接关联起来

    E-R图:

    在这里插入图片描述

    二、逻辑结构设计

    所谓的逻辑结构设计,就是将E-R关系模型进行 表结构的转换

    E-R 关系模型 -----------------> 表结构

    我们先要了解 三个关系概念在mysql 表中是怎么处理的

    1对1

    在任意一端加入对方的主键作为外键的存在

    1对多

    在多端加入一端的 主键作为外键存在

    多对多

    生成新的表,该表至少包含双方主键作为外键存在

    所以:

    在课程信息表 这个多端加入 教师id 进行 教师——课程 1对多 关联

    课程信息表(course_info):

    字段:id(主键)、teacher_id(教师id 主键)、course_name(课程名称)、course_code(课程号)、course_type(课程类别)、course_score(学分) 、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

    教师表(teacher_info):

    字段:id(主键)、code(工号)、name(姓名)、sex(性别)、professional(职称)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

    学生表(student_info):

    字段:id(主键)、code(学号)、name(姓名)、sex(性别)、age(年龄)、class_name(专业班级)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

    学生课程关联表(student_course_info):

    字段:id(主键)、stu_id(学生id)、cou_id(课程id)、socre(成绩)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

    三、物理结构设计

    物理结构设计就是在mysql 数据库中建库,建表了
    在这里插入图片描述
    代码建库建表这边就不在再过多赘述了 参考文章 mysql从入门到放弃— 初步认识
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    建表脚本,过长,这边就不贴出来了,有需要的同学 可以自行获取

    推荐阅读

    mysql 从入门到放弃——基本约束以及语法

  • 相关阅读:
    设计模式-工厂模式
    k8s 集群调度,标签,亲和性和反亲和性,污点和容忍,pod启动状态 排错详解
    springboot+vue学生综合测评系统(java项目源码+文档)
    一次分表的技术方案分享
    酷快讯:Eminem和Snoop Dogg无聊猿新MV加持后ApeCoin上涨22%
    腾讯云免费SSL证书申请流程(图文教程)
    【使用OpenCV进行目标分割与计数的代码实例详解】
    中间件 - 分布式协调服务Zookeeper
    Redis分布式锁Redisson
    Oracle如何快速删除表中重复的数据
  • 原文地址:https://blog.csdn.net/qq_42482058/article/details/127884727