数据库 ER图 EER图(鸭蹼图) freedgo绘图工具
文章目录
- 一. freedgo在线绘图工具
- 二. 数据库
- 1. 概念
- 2. 分类
- 3. 基本术语
- 4. 实体关系
- 4.1 数量关系
- 4.2 从属关系
- 三. ER图&EER图
- 1. ER图
- 2. EER图
- 3. 绘制
- 3.1 需求
- 3.2 实体
- 3.3 实体属性
- 3.4 实体关系属性和关系
- 4. 设计范式
基于基本的数据库/数据关系模型概念,总结数据关系的设计和绘制,使用freedgo在线工具绘图实现
一. freedgo在线绘图工具
- 工具链接:https://www.freedgo.com
- 可以绘制各种场景用途的图,见下图
- 提供丰富的模板,界面简洁舒适,易上手
- 本文暂时只介绍该工具中Mysql ER图的使用编辑方法(其他模板慢慢探索)
- 具体使用在后续章节介绍中展开
二. 数据库
- 详细介绍参考:MySQL数据库(基础)
1. 概念
- 用于存储和管理数据的仓库
2. 分类
- 关系型数据库:基于关系模型的数据结构(二维表)
- 建立在关系模型上的数据库
- Oracle、DB2、MySQL 、SqlServer、Sybase、Access
- 四层结构:
- 数据库管理系统(DBMS):管理系统运行 (DateBase Management System)
- 数据库(DB):数据存储的管理者 (小管理,受DBMS管理)
- 数据表(Table):数据关系管理者
- 数据字段(Field):实际数据存储者 (依赖于数据表)
- 非关系型数据库:NoSQL (Not only SQL)
- 所有不是关系型数据库的统称,没有具体模型的数据结构,数据存储模型不是二维表,而是键值对(key->value)
- MongoDB、Redis、Memcached
3. 基本术语
常用的数据库是
MySQL
,有三大要素:实体
、属性
、关系
,概念上分别对应表
、列
、主键/外键
- 数据表(实体)(table):数据的矩阵,一个表(实体)看起来像一个简单的二维电子表格
- 能被
统一、抽象的属性
进行描述的数据对象可以看做是一个实体 - 学生和电脑可以被看作是两种实体
- 学生实体的属性有学校、班级、学号等
- 电脑实体的属性包括品牌、型号、尺寸等课程
- 能被
- 行(row):一行是一组相关的数据,写入数据库数据时是按行进行写入存储
- 类似二维表格中的行的概念
- 一行是实体中的一条数据记录
- 如学生实体(学生表)中,一行表示一个学生的信息,由多种属性组成“一个学生”的数据
- 列(column):一列对应相同类型的数据,是表中的一个字段
- 一个实体内,不同的数据记录都会由相同的属性组成,一个属性就是表里的一列
- 主键(primary key):一个表中只含一个主键,可以唯一标识表中的一行
- 如学生数据表中,学号可以作为主键,唯一标识区分学生(区分每行记录)
- 常统一用 uuid 作为主键
- UUID (Universally Unique Identifier)
- 通用唯一识别码,128位
- 数据在时间上和空间上的唯一标识
- 在数据移植时也不会出现重复
- 外键(foreign key):外键用于关联两个表,表的外键就是另一个表的主键
- 若uuid为学生表的主键,则在和学生表有关系的其他表中,会有一个外键属性,属性值为对应有关系的、学生表中的那条记录的uuid
4. 实体关系
- 基于主键/外键,数量上有三类主要关系,从属关系上有两种关系,用于表示两个实体之间的关系
- 实体之间的关系可以理解为是实体内数据记录之间的关系
4.1 数量关系
- 一对一:实体A中每个数据记录,至多与实体B中的一个数据记录有关系,反之亦然
- 如有学生实体和饭卡实体,一个学生(实体内的一个数据记录)只能有一个饭卡(实体内的一个数据记录),反之亦然
- 一对多:实体A中每个数据记录,至少与实体B中的n(n>0)个数据记录有关系,实体B中每个数据记录至多与实体A中的一条记录有关系
- 一个班级至少有一个学生,一个学生至多与一个班级有关系
- 多对多:实体A中每个数据记录,至少与实体B中的n(n>0)个数据记录有关系,反之亦然
- 一个学生可以与多个课程有关系(选了多个课程),一个课程可以与多个学生有关系(课程被多个学生选择)
4.2 从属关系
- 包含关系:实体A的数据包含实体B的数据;实体A为父表,实体B为子表;实体A的数据被删除后,实体B的数据也被删除
- 学校实体包含学生实体,学生数据属于学校数据,学校数据被删除后,学生数据也不存在
- 引用关系:实体A的数据引用实体B的数据,实体A数据删除后,实体B的数据还在,实体B的数据删除后,对应的实体A的数据也在,但是看不到所引用的实体B的数据
- 课表实体和学生实体,为引用关系,二者的存在没有依赖包含关系
- 语文课被删除后,学生数据仍在,但是课表中引用的语文课数据看不到了
三. ER图&EER图
建立数据库需要根据需求设计好数据关系,基于数据关系,开发代码,基于代码,对数据库数据进行有逻辑的读写
关于数据关系模型,有两种类型的模型:
ER:Entity-Relationship Modelling,逻辑模型,不能落地应用
EER:Enhanced Entity-Relationship Modelling,物理模型,和落地的数据库相关
正常情况,ER和EER图是不同设计阶段的产物,先有概念逻辑上的设计(ER),再具体出物理模型上的设计(EER)
1. ER图
样例:
本次以EER的绘制为主,ER图绘制参考:ER图画法及图形含义、举例说明、通俗易懂
2. EER图
(好像又叫鸭蹼图crow‘s foot)
ER图在实体和属性太多的情况下,看起来比较费劲,也不够直观,EER图更条理直观,自己对EER图进行了一定的简化处理,易于理解
3. 绘制
可以用数据库工具mysql workbench或绘制,此处用前面介绍的freedgo工具在线绘制,方便,上手快,绘图要素够用,直观
设计绘制可参考的使用习惯步骤:
- 了解需求
- 识别并绘制实体
- 识别并添加实体属性
- 识别并添加实体关系属性
- 对关系属性建立关系
3.1 需求
- 设计数据关系前,需要理解需求,从中整理抽象出数据部分
- 数据库是对数据的读写,在梳理出数据的时候,要剥离原有的信息,只考虑数据部分,考虑需要存储哪些数据,以及之间的关系
3.2 实体
分析有哪些大的数据对象,并且概念上能明显区分,能被基本不同的属性描述,这些属性可以是软件界面上展示的属性,也可以是隐藏属性
- 绘制方法
- 左下角添加图形(实体关系)
- 拖拽添加实体
- 修改实体名称
- 选中实体,右侧根据喜好修改颜色风格
3.3 实体属性
分析构成该实体的属性
- 此处因为用uuid作为所有实体的主键,因此习惯去掉主键(3.2图中标识了钥匙的属性)
- 属性可以复制粘贴
- 属性本身有许多特性需要描述,如数据类型(字符串、整型等),可以使用预定义的信息,右击编辑
- 或自定义编辑:
Ctrl+M
- 悬浮浏览属性的详细信息
3.4 实体关系属性和关系
此处将两个实体之间的关系通过
关系属性
展示出来,两个实体的关系通过连接
两个实体的关系属性
表示
一般表达方式:
- 将两个表用线连接,表示两个表的关系,和关系相关的信息,在绘制工具中双击连线进行设置
- 或者可以将关系名称写在连线上标识关系(链接)
- 但在实体较多时,或者一个实体所关联的实体较多时,关系的浏览会较为混乱,不直观
采用如下标识方式
- 一个关系线的两端,为对应实体的“关系属性”,即用
不带数据类型的属性
进行表示 - 学生实体中的关系属性
selectedCourse
- 属于学生实体,表示
所选的课程
- 关系属性,表示从对应的实体(课程实体)中拿到该信息(某学生所选课程)
- 关系属性的名称,表示为线的另一端的实体,如,儿子实体和父亲实体,在儿子实体中,关系属性命名为“我的父亲”,在父亲实体中,对应的关系属性为“我的儿子”
- 属于学生实体,表示
- 关系为多对多(n-n)(右击连线或点击连线,编辑线的属性)
- 虚线表示“引用”关系(包含关系用实线表示)
- 编辑方式:
- 一个关系线的两端,为对应实体的“关系属性”,即用
4. 设计范式
- 数据库设计时遵循的规范:数据库三大范式
数据库 ER图 EER图(鸭蹼图) freedgo绘图工具相关推荐
- 数据库评书---MySQLWorkbench绘制EER图(鸭蹼图, chen’s ER图)
目前CSDN较少关于系统的介绍EER图,所以有了这篇文章 本来想从国内ER图画法写到国外课程常见的EER图和Chen's ER图,但发现没有必要,网上关于ER图画法介绍一大把, 所以直接介绍关于EER ...
- 一个实用技巧,告别手动画图,自动生成数据库 ER 图|原创
来自:程序通事 忙,真忙 这两个星期真是巨忙,年前有个项目因为各种莫名原因,一直拖到这个月才开始真正测试.然后上周又接到新需求,马不停蹄进入开发. 一边开发着新需求,一边改着旧项目的 Bug.再加上这 ...
- 【数据库E-R图知识点和相关习题(复试真题)】
文章目录 数据库E-R图知识点和相关习题 E-R图的前置知识 习题 工厂物资管理系统(例题) 防疫管理系统(2021) 社区隔离人员管理系统(2020A) 在线教学管理系统(2020B) 餐厅管理系统 ...
- mysql学生管理系统er图_java swing mysql实现的学生选课成绩信息管理系统附带视频指导教程及数据库ER图...
<p> <span style="color:#4F4F4F;font-family:"font-size:16px;background-color:#FFFF ...
- 能画数据库E-R图的软件有哪些
能画数据库E-R图的软件有很多,包括: Visio:这是一款功能强大的图形绘制软件,能够用来绘制各种图形,包括E-R图. SmartDraw:这是一款专门用于绘制E-R图的软件,具有专业的图形绘制功能 ...
- mysql e r图_mysql数据库E-R图
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 它是描述现实世界关系概念模型的有效方法.是表示概 ...
- EA逆向生成数据库E-R图(mysql数据库--ER图)
步骤: 1. 创建ODBC数据源 2.EA新建项目 3.新增er_er图[点击ERD View-->右键-->添加图] 4.从ODBC中导入数据库Schema... 5.点击导入,然后点击 ...
- 【数据库基础】EER图(Enhanced Entity-Relationship Modelling)
目录 1. 为什么需要EER model? 什么时候用EER? 2. Specialization / Generalization 特化和概化 特化和概化的两种约束 1.Participation ...
- 软考大题做题技巧——数据流图、数据库E-R图、UML、算法、设计模式(干货!)
小编在软考最后一周,破釜沉舟的学习软考的大题,找到了一些大题的做题技巧,特此分享给大家,希望所有参加软考的同学都能尽自己百分百的努力,收获最好的结果. 做题时可以重点找一下每类问题考察的考点以及提问问 ...
- 数据库E-R图基础概念
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. ER模型的基本元素 实体:用方框表示,实体名为名 ...
最新文章
- Python3 统计 ftp 文件个数和大小
- matlab 中fft的用法
- Python update 函数 - Python零基础入门教程
- c语言折半查找法找字符,C语言折半查找法练习题冒泡排序
- c++ 原子操作 赋值_Volatile深度剖析-原子性
- 如何在Mac的内置词典中添加和删除单词
- UIImageView的animationImages动画
- PAT 1005 继续(3n+1)猜想
- Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计...
- 阿里矢量图标(字体图标) 、 阴影
- java代码合成多张图片成一张
- Vue一级二级三级域名下cookie值共享(不同域名cookie共享)
- 1分钟理清楚C++类模板和模板类区别
- python图像拼接_python实现图像拼接
- ubuntu20.04安装ROS及常见问题
- sap采购申请自动转采购订单
- Office Web apps可以利用Excel Web JavaScript编程
- (超级详细秒懂)带你秒懂web电子账单板块代码
- 关于瑞萨RL78系列单片机在线升级
- mybatis-Springboot配置多数据源出现错误记录