MySQL小白数据库零基础教程-ER图设计实战教程-学不会你来找我

大家好,我是大头,职高毕业,现在大厂资深开发,前上市公司架构师,管理过10人团队!
我将持续分享成体系的知识以及我自身的转码经验、面试经验、架构技术分享、AI技术分享等!
愿景是带领更多人完成破局、打破信息差!我自身知道走到现在是如何艰难,因此让以后的人少走弯路!
无论你是统本CS专业出身、专科出身、还是我和一样职高毕业等。都可以跟着我学习,一起成长!一起涨工资挣钱!

MySQL零基础教程

本教程为零基础教程,零基础小白也可以直接学习,有基础的可以跳到后面的原理篇学习。
基础概念和SQL已经更新完成。

接下来是应用篇,应用篇的内容大致如下图所示。

概念学习

ER图

接下来讲讲ER图,这个是在实际工作中也会使用到的东西。

大家应该都听过ER图,全称是(Entity Relationship)实体关系图。

借用维基百科的介绍:

ER模型,全称为实体联系模型、实体关系模型或实体联系模式图(ERM)(英语:Entity-relationship model)由美籍台湾人计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型或模式图。

ER图通常用在设计数据库的阶段,当我们接到一个需求以后,我们要进行一些技术设计,在这个阶段如果涉及到一些对于数据库的修改,我们可以使用ER图进行设计。

万事万物都有两面性,因此我们看一下好处和坏处,如何使用由大家自己权衡。

  • 好处:好处是设计直观、在设计之后也方便给大家讲为什么这样设计,还有留存文档,当后续需要修改设计的时候直接修改即可。
  • 坏处:坏处就是需要花时间去画ER图了。

ER图的基本概念

ER图的主要组成部分

  • 实体(Entity):
    • 实体是数据库中具有相同属性集合的对象。例如,学生、课程、教师等。
    • 在ER图中,实体通常用矩形表示,矩形内写上实体的名称。
  • 属性(Attribute):
    • 属性是实体的特征或性质。例如,学生的属性可以包括学号、姓名、年龄等。
    • 在ER图中,属性通常用椭圆表示,椭圆内写上属性的名称,并用线连接到对应的实体。

简单来讲,实体就是一个表,属性就是表里面的一个字段。

下图就是一个ER图实体管理员用户属性有头像、密码、登录名、ID、邮箱、手机号。

概念学习

  • 关系(Relationship):
    • 关系描述了实体之间的联系。例如,学生和课程之间的关系可以是选修。
    • 在ER图中,关系通常用菱形表示,菱形内写上关系的名称,并用线连接到相关的实体。
  • 关系的类型:
    • 一对一关系(1:1):一个实体与另一个实体之间存在一对一的联系。例如,一个学生对应一个学号。
    • 一对多关系(1:N):一个实体与多个实体之间存在联系。例如,一个教师可以教授多个课程。
    • 多对多关系(M:N):多个实体与多个实体之间存在联系。例如,一个学生可以选修多个课程,一个课程也可以被多个学生选修。

下图就是一个ER图,实体是管理员用户和角色两个。关系拥有,表示管理员用户拥有角色的关系。关系的类型用m和n表示多对多关系。意思是一个管理员用户可以拥有多个角色,一个角色也可以被多个管理员用户拥有。

概念学习

关系这个东西,简单来说就是通过两个字段链接进行实现的。

多对多关系

比如我们有角色表和管理员用户表,这两个表,是多对多关系。

所以我们就需要用一张单独的表来存储这个关系。比如我们新建第三个表叫角色和管理员用户关系表。

角色和管理员用户关系表有字段内容如下:

  • id: 该表的主键。
  • roleId: 角色表的主键。用来关联角色信息。
  • adminId: 管理员用户表的主键。用来关联管理员用户信息。

可以看到,这个关系就是通过角色和管理员用户关系的两个字段来表示的。

角色表内容如下:

idname
1前台角色
2行政角色
3开发角色

管理员用户表内容如下:

idname
1张三
2李四

角色和管理员用户关系表内容如下:

根据表的数据我们很清晰的能看出来,张三既拥有前台角色也拥有行政角色,可谓身兼数职。当代牛马。李四则拥有一个开发角色

idroleIdadminId
111
221
312

记住上面说的,通过两个字段链接进行实现的。

这里的两个字段就是roleIdadminId

roleId = 1表示的是角色表中,id = 1前台角色,对应的数据是adminId = 1的数据,也就是管理员表中id = 1的管理员张三

如此,我们就知道了,张三拥有角色:前台角色。

一对多关系

一对多关系多对一关系基本一样。就是反过来了。

一个老师可以教授多个课程,比如我们有两个表,一个老师表,一个课程表

一对多关系比较灵活,记住上面说的,通过两个字段链接进行实现的。

先看老师表的数据如下:

idname
1张老师
2李老师

课程表的数据如下:

idnameteacher_id
1语文课程1
2数学课程2
3英语课程1

为什么说一对多关系比较灵活呢,可以看到,我们这里用到的关联字段是老师表的id和课程表的teacher_id。而不需要再多加一张表了。

这里要记住一个重点!!!!
多出来的这个teacher_id 字段要放在一对多关系中的 多 的这个表里面。

什么是一对多关系中的的关系呢?

比如上面一个老师教多个课程,那么的关系就是课程信息。

当然了,如果你想要多加一张表来存储这两个字段的话也是可以的。

比如增加下表,教授课程表,如果增加了这张表,就可以把课程表中的teacher_id字段删除了:

下表也代表了张老师教授语文课程和英语课程,李老师教授数学课程。

idcourse_idteacher_id
111
222
331
一对一关系

一对一关系是最简单的。其实算是一对多关系的一个真子集

为什么这么说呢?

我们假设,一个老师只能教授一个课程,那么上面的两个表是不是就变成了一对一关系呢?所以我们说一对一关系是一对多关系的一个真子集。

ER图实践

接下来我们来实践一下ER图。

我这里使用的工具是免费的在线画图工具Processon

多对多关系的ER图

首先来画出多对多关系的ER图吧。

以上面的三个表为例子。

我们需要两个实体和一个关系。

  • 实体1: 管理员实体,管理员实体后面会转化成管理员表。
  • 实体2: 角色实体,角色实体后面会转化成角色表。
  • 关系:两个实体之间的多对多关系,多对多关系后期需要转换成一张关系表。

我们首先画出第一个实体,管理员实体使用矩形表示。如下图。

概念学习

接下来我们给管理员实体增加属性,属性使用椭圆来表示,如下图。

概念学习

现在我们画出第二个实体,角色实体和对应的属性。

概念学习

接下来我们画出关系,关系使用棱形来表示,并且使用线连接两个实体,表示是这两个实体之间的关系。多对多关系还需要在两边分别标记上nm

此外,关系还要有一个名称,用来描述,比如管理员拥有角色,角色被管理员拥有。所以我们可以用拥有关系来描述这两个实体之间的关系。

概念学习

如此,我们就完成了一个多对多关系的ER图。

一对多关系的ER图

接下来再实践一次一对多关系的ER图,最好大家先动手画一次,再跟我们的结果来对比,只有自己实操了才行。

实操时间。。。。。

好了,实操结束。

我们来看一下一对多关系如何画图。

我们需要两个实体和一个关系。

  • 实体1: 教师实体,后面变成教师表。
  • 实体2: 课程实体,后面变成课程表。
  • 关系:两个实体之间的一对多关系,一对多关系可以是一个字段也可以是一个表。

首先画出第一个实体和属性,也就是教师实体。

概念学习

接下来画出第二个实体和属性,也就是课程实体。课程实体这里有一个属性是教师ID,这代表我们使用这个字段,而不是增加了一个关系表。如果我们没有这个字段就代表我们要增加一个关系表。

概念学习

最后,画出关系并连线。这里关系名称我们选择教授,这个其实无所谓。能明白就好。重点是要标明一对多关系,可以看到教师实体上写的是1,课程实体上写的是n,代表一对多关系中,教师是1,课程是多。这个不能写反了。

概念学习

多对一关系的画起来是一样的,需要注意的就是关系上的1和n别写错了。

一对一关系的ER图

一对一关系的ER图和上面的差不多,我们举个例子吧。

  • 实体1: 用户实体,转化成用户表,存储用户信息。
  • 实体2: 用户账户实体,转化成用户账户表,存储用户的账号资金信息。
  • 关系:一对一关系,一个用户只能拥有一个用户账户。

首先画出第一个实体,用户实体。属性包括ID、用户名称、手机号。

概念学习

接下来画出第二个实体,用户账户实体,属性包括ID、账户余额、用户ID。用户ID作为关联关系的字段,和一对多关系一样,就不需要单独加表了。

概念学习

最后,画出关系并连线,标上关系是一对一关系就可以了。

概念学习

总结

通常来说,ER图是在设计阶段完成的,先有ER图再有表结构。

可如果你已经有了表结构,有没有办法生成ER图呢?

也是有方法的,比如著名的Navicat工具,就支持这么做。

此外,还有一个方法,就是使用在线工具dbdiagram,这个工具可以导入现有的SQL,会生成ER图,如下。

概念学习

这个网站是通过左边的一个叫dbml的语言来生成ER图的,也支持直接导入SQL,转化成dbml格式再生成ER图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值