数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具

基于基本的数据库/数据关系模型概念,总结数据关系的设计和绘制,使用freedgo在线工具绘图实现

一. freedgo在线绘图工具

  • 工具链接:https://www.freedgo.com
  • 可以绘制各种场景用途的图,见下图
  • 提供丰富的模板,界面简洁舒适,易上手
  • 本文暂时只介绍该工具中Mysql ER图的使用编辑方法(其他模板慢慢探索)
  • 具体使用在后续章节介绍中展开

freedgo-逻辑设计

freedgo-图表制作

思维导图功能

ER模型

二. 数据库

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图

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. 设计范式

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值