mysql——数据库设计

news2024/10/5 23:28:13

前言

之前我们已经了解了 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 数据库中建库,建表了

在这里插入图片描述
这边直接使用可视化工具建 数据库可视化工具分享 (DBeaver)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
建表脚本,过长,这边就不贴出来了,有需要的同学 可以自行获取 ,脚本 点 这篇文章文末 有获取方式

最后,感谢您的阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十大排序算法(Java实现)

文章目录 零、总览 / 前言一、冒泡排序1.算法描述2.代码&复杂度 二、选择排序1.算法描述2.代码&复杂度 三、插入排序1.算法描述2.代码&复杂度分析 四、希尔排序1.算法步骤2.代码&复杂度分析 五、归并排序1.算法描述2.代码&复杂度分析 六、快速排序1.算法描…

《强化学习的数学原理》思维导图,供初学者参考

对应课程: 【强化学习的数学原理】课程:从零开始到透彻理解(完结)_哔哩哔哩_bilibili

Linux 系统下 CMake 示 例

CMake 是一个开源的跨平台工具,可以构建、测试和打包软件。 它具有如下特性: 自动搜索可能需要的程序、库和头文件的能力;独立的构建目录(如build),可以安全清理;支持复杂的自定义命令&#xf…

一文了解什么什么是加密货币及其工作原理

加密货币是基于区块链技术并由密码学保护的去中心化数字货币。要理解加密货币,首先需要理解三个术语——区块链、去中心化和密码学。 一、加密货币如何运作 简而言之,加密货币中的区块链是一种数字分类账,其访问权限分布在授权用户之间。该分…

hello算法学习笔记之排序

概述:排序算法 在排序算法中,数据类型可以是整数、浮点数、字符或字符串等;顺序的判断规则可根据需求设定,如数字大小、字符 ASCII 码顺序或自定义规则。 评价维度: 运行效率、就地性、稳定性、自适应性&#xff08…

21.RocketMQ源码之NameServer的路由管理和架构设计

highlight: arduino-light NameServer 路由管理 Broker消息服务器在启动的时向所有NameServer注册。 消息生产者Producer在发送消息之前先从NameServer获取Broker服务器地址列表然后根据负载均衡算法从列表中选择一台服务器进行发送。 NameServer与每台Broker保持长连接&#x…

单频/双频gps北斗模块相关应用领域详解_SKYLAB GPS+北斗模块

以“时空数据,赋能未来”为主题的第十二届中国卫星导航年会在江西南昌正式开幕,据悉,本届年会是北斗系统开启全球化、产业化的第一届年会。2020年,北斗三号全球卫星定位系统正式服务全球,作为北斗产业链中的一员&#…

小黑厦门极限神游,通宵环岛骑行,鼓浪屿徒步赏景的leetcode之旅:剑指 Offer 48. 最长不含重复字符的子字符串

小黑代码(与官方题解思路一致&#xff0c;比其可读性更强) class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 字符串长度n len(s)# 定义双指针head 0tail 0# 中间变量&#xff0c;存放窗口中的元素set_ set()# 结果变量length 0while tail < n…

Flutter iOS 打包 问题处理

日常问题收集&#xff1a; remark: Incremental compilation has been disabled: is not currently compatible with embedding LLVM IR bitcode a. 在Build Settings中搜索Enable Bitcode-> 设置No b. Project-> Targets-> Build Settings-> Custom Compiler Flag…

银行数字化转型导师坚鹏:银行数字化运营所必须采取的五大措施

银行数字化运营已经成为提升市场竞争力和客户满意度的重要战略。以下是银行数字化运营所必须采取的五大措施&#xff1a; 1) 建立强大的数字化基础设施&#xff1a;银行需要投资建立可靠的数字化基础设施&#xff0c;以支持数字化运营的各个方面。这包括更新和升级银行的IT系统…

springboot集成openfeign

一、Feign简介 Feign是一个声明式的伪Http客户端&#xff0c;它使得写Http客户端变得更简单。使用Feign&#xff0c;只需要创建一个接口并注解。它具有可插拔的注解特性&#xff0c;可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon&…

Django - 定时任务框架【django-apscheduler】基本使用详解(二)

一. 前言 一个网页会有很多数据是不需要经常变动的&#xff0c;比如说首页&#xff0c;变动频率低而访问量大&#xff0c;我们可以把它静态化&#xff0c;这样就不需要每次有请求都要查询数据库再返回&#xff0c;可以减少服务器压力 我们可以使用Django的模板渲染功能完成页面…

【Android Framework系列】第4章 PMS原理

1 PMS简介 PMS&#xff08;PackageManagerService&#xff09;是Android提供的包管理系统服务&#xff0c;它用来管理所有的包信息&#xff0c;包括应用安装、卸载、更新以及解析AndroidManifest.xml。通过解析每个安装应用的AndroidManifest.xml&#xff0c;将xml中的数据全部…

Acwing.846 数的重心(DFS)

题目 给定一颗树&#xff0c;树中包含n个结点&#xff08;编号1~n)和n-1条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点&#xff0c;如果将这个点删除后&#xff0c;剩余各个连通块中…

Java项目实战——Linux入门

文章目录 一、Linux安装1.1、安装方式介绍1.2、网卡设置1.3、安装SSH连接工具1.4、Linux和windows目录结构对比1.5、Linux目录结构 2、Linux常用命令2.1、Linux命令初体验2.2、使用技巧2.3、命令格式2.4、文件目录操作命令文件目录操作命令ls小知识 文件目录操作命令cat文件目录…

数据倾斜排查

一、问题现象 租户反馈&#xff0c;任务执行时长加长&#xff0c;执行过程中任务卡在 99%&#xff0c;大概率是出现了数据倾斜 二、排查过程 数据倾斜大多数都是大 key 问题导致的。排查方法如下&#xff1a; 1.时间判断 reduce 的时间比其他 reduce 时间长的多&#xff0c;大…

基于STM32的户外环境监测系统的设计

目录 1 引言 1.1 本课题的研究意义 1.2 本课题的研究现状 1.3本课题的发展趋势和研究可行性 1.4本课题主要研究工作 2 系统的概述和相关原理 2.1 系统的概述 2.1.1 总体设计的方案 2.1.2 总体框图 2.2 相关理论 2.2.1 STM32平台 2.2.2 WIFI模块 3 硬件电路设计 8 3…

解决页面等比缩放问题

近些年可视化数据大屏技术早已成熟&#xff0c;在市场上相关技术也是五花八门&#xff1b;通常情况是自行开发&#xff0c;要不找技术比较成熟大厂定制&#xff0c;或者使用较成熟的低代码平台实现。 技术门槛比较低&#xff0c;不过在数据大屏项目实施过程中会发现&#xff0c…

《移动互联网技术》第一章 概述: 掌握移动互联网的基本概念和组成

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

密码找回安全总结-业务安全测试实操(28)

撞库攻击 撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登录其他网站后,得到一系列可以登录的用户名和密码组合。由于很多用户在不同网站使用的是相同的账号和密码,因此黑客可以通过获取用户在 A 网站的账户从而尝试登录B网站,这就可以理解为…