Mysql_3 ER 和 EER 模型

本文涉及的产品
云数据库 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 方言。完整版付费。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
119 0
|
8月前
|
SQL 关系型数据库 MySQL
【Mysql-InnoDB 系列】事务模型
提到事务,大家都有基本的了解,例如mysql的事务隔离级别包括:读未提交、读已提交、可重复读、串行化;InnoDB默认是RR(可重复读);基本的MVCC等等。但大部分人对深入一些的原理就知之甚少了。本文整理事务模型的相关内容,仅供参考。
86 0
|
8月前
|
SQL 关系型数据库 MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
122 0
|
6月前
|
SQL 关系型数据库 MySQL
07 Django模型 - ORM简介及MySQL数据库的使用
07 Django模型 - ORM简介及MySQL数据库的使用
38 0
|
3月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
60 0
|
4月前
|
NoSQL Java 关系型数据库
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
249 0
|
4月前
|
NoSQL Java 关系型数据库
基于java swing和mysql实现的学生选课成绩信息管理系统(源码+数据库+ER图文档+运行指导视频)
基于java swing和mysql实现的学生选课成绩信息管理系统(源码+数据库+ER图文档+运行指导视频)
|
11月前
|
存储 SQL 自然语言处理
MySQL索引简介 - InnoDB和MyISAM索引模型
MySQL索引简介 - InnoDB和MyISAM索引模型
77 0
|
12月前
|
SQL 关系型数据库 MySQL
django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
django drf 初始化配置(mysql、跨域访问、默认用户模型)和用户模型重写,数据迁移,解决用户模型重写后无法创建超级用户的问题
|
SQL 运维 安全
MySQL慢查询风险指数模型设计(3)
MySQL慢查询风险指数模型设计
144 0