Mysql_3 ER 和 EER 模型

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 学习于:b站 骆昊 jackfrued 老师的网课+黑马网课

本文思路主要来源于骆昊jackfrued 老师的网课
仅供本人学习参考,未做其他用途!

在此也建议读者通过老师的课程学习。

介绍

为什么要有 ER 图和 EER 图的存在?

真正做项目、设计数据库时,实际并没有这么简单,比如还有很多用户看不到、但为了方便 DBA 使用而创建的字段。如 id,一般还会有两条 Date 字段(一表示这条记录被创建的时间,二表示这条记录最后更新的时间),以及预留一个 VARCHAR / json 字段;还有一些其他注意事项(比如 auto-increment 约束其实开发中不常用,更多使用算法比如分布式 ID 生成算法(如 SnowFlake……)当然对课程来说这并不重要)是不可能一上来就写 SQL 语句的,需要先设计表的结构和表之间的关系。

ER 模型

ER 图(Entity Relationship, 实体关系)因此出现。下图是一个 ER 图的示例,其中矩形框代表:表(也就是实体),椭圆框代表:表中的字段(实体的属性),菱形框代表:关系,在连接线上表明了关系的重数。

百度百科图片

相较于大段的 SQL 建表语句,只要能看懂 ER 图,表的结构、关系一目了然。

EER 模型

相较 ER 模型多了泛化层次、汇集层次、弱实体等概念。

泛化层次

包括 generalization 和 specialization (泛化和特化)、父类(superclass)和子类(subclass)的概念。

子类父类就是类似 Java 的继承,如动物是父类,猫、狗是其子类。子类父类是一对一的关系!

泛化又叫归纳,就是将几个类的共同属性提取出来作为父类;

特化又叫演绎,就是在父类的基础上添加各自特殊的属性作为子类。

其中,子类和超类又有两个关系属性:mandatory 和 optional、disjoint 和 overlapping。

mandatory / optional:父类中的所有属性都必须包含在每一个子类中 / 不用全部继承,选择部分继承即可(完全性限制)

disjoint / overlapping:继承同一个父类的几个子类之间是否可以有相交的属性(相交性限制)

img

图中 运输工具是父类,飞机、火车、汽车是子类。圆圈中写 D / O,表示 disjoint / overlapping。父类和圆圈之间是双实线,表示是 mandatory 完全性继承。

汇集层次

Aggregation, 汇集层次不再有父类子类的区别,而是由……组成的区别。

img

如图,房间、门窗、电脑、投影仪等是教室的组成部分,不是继承关系。

弱实体

一种实体只有另一种实体存在的时候才有意义。如父母和子女,少了一方另一方就没有意义了。

img

Workbench 等工具支持画 ER 图,甚至画好后可以自动生成 SQL 语句建表。 Workbench 中的图是 EER 图(扩展的ER 图)

EER 图示例

在 EER 图下,点击 DATABASE - FORWARD ENGINEER 正向工程,可以选择要生成的表、字段,生成 SQL 语句建立表。

自动生成的 SQL 语句中,外键下方有两句话ON DELETE NO ACTION ON UPDATE NO ACTION,意为:当外键参考的主键修改/删除时,外键所在的表会受到什么样的影响?——不采取任何行动。建议去掉这两句话。如果去掉,就不能随便修改/删除外键在使用的主键。

同样地,在 SQL 语句页面,点击DATABASE - REVERSE ENGINEER 反向工程,可以根据表的结构生成 EER 图。

Power Designer 建模工具,也支持正 / 反向工程,可以生成 SQL 方言。完整版付费。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
242 0
|
3月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
3月前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
3月前
|
存储 关系型数据库 MySQL
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
49 1
|
3月前
|
存储 关系型数据库 MySQL
深入探索MySQL:成本模型解析与查询性能优化
深入探索MySQL:成本模型解析与查询性能优化
|
3月前
|
关系型数据库 MySQL 调度
深入理解MySQL InnoDB线程模型
深入理解MySQL InnoDB线程模型
|
4月前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
10月前
|
SQL 关系型数据库 MySQL
07 Django模型 - ORM简介及MySQL数据库的使用
07 Django模型 - ORM简介及MySQL数据库的使用
58 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
92 0
|
4月前
|
NoSQL Java 关系型数据库
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
476 0

热门文章

最新文章