设为首页
收藏本站
切换到窄版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
C语言
C++
NET
JAVA
PHP
易语言
数据库
IE盒子
»
论坛
›
IE盒子
›
数据库
›
mysql 从入门到放弃— 数据库设计
返回列表
发帖
查看:
78
|
回复:
0
mysql 从入门到放弃— 数据库设计
[复制链接]
凤翔天
凤翔天
当前离线
积分
21
5
主题
9
帖子
21
积分
新手上路
新手上路, 积分 21, 距离下一级还需 29 积分
新手上路, 积分 21, 距离下一级还需 29 积分
积分
21
发消息
发表于 2023-1-9 14:18:40
|
显示全部楼层
|
阅读模式
之前我们已经了解了 mysql 的基本增删改查mysql 从入门到放弃——基本约束以及语法
现在我们系统的进行一遍数据库的设计,建议收藏 ~~
直接进入主题
来个例子:下面我们将围绕这个例子来进行数据库的设计
我们就来
简单的模拟
大学教务处的选课 系统 中的 选课功能
注意:简单的模拟,功能可能想到的没那么完善,不要杠我
一、概念设计
什么是概念设计呢, 简单来说就是一些 E-R 图 ,实体之间的联系
现在我们来分析一下,简易的 选课系统,有哪些主体,说人话就是有哪些对象
首先:
选课,选课 肯定有
课程信息
的 主体 ,不然选了个寂寞,主要属性
课程名称
、
课程号
、
课程类别 、学分
等等,我们这边就不列那么多了
其次
课程谁录进去?就算是批量导入也会有操作者,这里就 认为是老师自己录进去的了,那就有一个 主体是
老师信息,
其属性有:
教工号、姓名、性别、职称
再者
选课应该是学生去选课,这就有了
学生信息
这个主体
,
其属性有:
学号、姓名、性别、年龄、专业班级
品一品他们之间的关系,E-R图 就出来了
1. 老师跟课程的关系是什么?
一般情况来说,一个老师可以上多门课程,一门课程只能让一个老师上,不要说 (不同班,都是 名字是 微积分 的课程,但是是 两个老师在上) ,其实这里只是课程同名,他们的id 不同,是两个不同的对象
所以
老师跟课程的关系
为
1对多
2. 学生跟课程的关系是什么?
一个学生可以选择多门课程,一个课程也可以被多名学生选择,因此,这边
学生 跟 课程的关系
是
多对多
3. 学生跟老师有没有关系呢?
当然有,但并不是主要的,毕竟我们是选课功能,主要选的是课程,并不是选老师、(还没到研究生选导师环节)我们这边可以根据课程信息进行间接关联起来
E-R图:
二、逻辑结构设计
所谓的逻辑结构设计,就是将E-R关系模型进行 表结构的转换
E-R 关系模型 -----------------> 表结构
我们先要了解 三个关系概念在mysql 表中是怎么处理的
1对1
在任意一端加入对方的主键作为外键的存在
1对多
在多端加入一端的 主键作为外键存在
多对多
生成新的表,该表至少包含双方主键作为外键存在
所以:
在课程信息表 这个多端加入 教师id 进行 教师——课程 1对多 关联
建表规范: mysql 从入门到放弃——基本约束以及语法
课程信息表(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)
代码建库建表这边就不在再过多赘述了 mysql从入门到放弃— 初步认识
建表脚本,过长,这边就不贴出来了,有需要的同学 可以自行获取 ,公众号内回复【mysql脚本】 获取 脚本
后续我们将会对这个例子进行案例分析,复杂查询,建立索引等等~~
最后,感谢您的阅读,
推荐阅读:
mysql 从入门到放弃—一篇文章搞懂索引
MySQL从入门到放弃——七种join解析
mybatis-plus进行数据字段加密解密入库
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
NET
快速回复
返回顶部
返回列表