数据库 & 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图的使用编辑方法(其他模板慢慢探索)
  • 具体使用在后续章节介绍中展开

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第1张图片

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第2张图片

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第3张图片

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第4张图片

二. 数据库

  • 详细介绍参考:MySQL数据库(基础)

1. 概念

  • 用于存储和管理数据的仓库

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第5张图片

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,逻辑模型,不能落地应用
    数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第6张图片

  • EER:Enhanced Entity-Relationship Modelling,物理模型,和落地的数据库相关
    数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第7张图片

  • 正常情况,ER和EER图是不同设计阶段的产物,先有概念逻辑上的设计(ER),再具体出物理模型上的设计(EER)

1. ER图

  • 样例:
    数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第8张图片

  • 本次以EER的绘制为主,ER图绘制参考:ER图画法及图形含义、举例说明、通俗易懂

2. EER图

(好像又叫鸭蹼图crow‘s foot)

ER图在实体和属性太多的情况下,看起来比较费劲,也不够直观,EER图更条理直观,自己对EER图进行了一定的简化处理,易于理解

3. 绘制

可以用数据库工具mysql workbench或绘制,此处用前面介绍的freedgo工具在线绘制,方便,上手快,绘图要素够用,直观

设计绘制可参考的使用习惯步骤:

  • 了解需求
  • 识别并绘制实体
  • 识别并添加实体属性
  • 识别并添加实体关系属性
  • 对关系属性建立关系

3.1 需求

  • 设计数据关系前,需要理解需求,从中整理抽象出数据部分
  • 数据库是对数据的读写,在梳理出数据的时候,要剥离原有的信息,只考虑数据部分,考虑需要存储哪些数据,以及之间的关系

3.2 实体

分析有哪些大的数据对象,并且概念上能明显区分,能被基本不同的属性描述,这些属性可以是软件界面上展示的属性,也可以是隐藏属性

  • 绘制方法
    • 左下角添加图形(实体关系)
    • 拖拽添加实体
    • 修改实体名称
    • 选中实体,右侧根据喜好修改颜色风格

数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第9张图片

3.3 实体属性

分析构成该实体的属性

  • 此处因为用uuid作为所有实体的主键,因此习惯去掉主键(3.2图中标识了钥匙的属性)
  • 属性可以复制粘贴
  • 属性本身有许多特性需要描述,如数据类型(字符串、整型等),可以使用预定义的信息,右击编辑
  • 或自定义编辑:Ctrl+M
  • 悬浮浏览属性的详细信息

3.4 实体关系属性和关系

此处将两个实体之间的关系通过关系属性展示出来,两个实体的关系通过连接两个实体的关系属性表示

一般表达方式:

  • 将两个表用线连接,表示两个表的关系,和关系相关的信息,在绘制工具中双击连线进行设置
    数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第10张图片
  • 或者可以将关系名称写在连线上标识关系(链接)
    数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第11张图片
  • 但在实体较多时,或者一个实体所关联的实体较多时,关系的浏览会较为混乱,不直观

  • 采用如下标识方式

    • 一个关系线的两端,为对应实体的“关系属性”,即用不带数据类型的属性进行表示
    • 学生实体中的关系属性selectedCourse
      • 属于学生实体,表示所选的课程
      • 关系属性,表示从对应的实体(课程实体)中拿到该信息(某学生所选课程)
      • 关系属性的名称,表示为线的另一端的实体,如,儿子实体和父亲实体,在儿子实体中,关系属性命名为“我的父亲”,在父亲实体中,对应的关系属性为“我的儿子”
    • 关系为多对多(n-n)(右击连线或点击连线,编辑线的属性)
    • 虚线表示“引用”关系(包含关系用实线表示)
      数据库 & ER图 & EER图(鸭蹼图) & freedgo绘图工具_第12张图片
    • 编辑方式:

4. 设计范式

  • 数据库设计时遵循的规范:数据库三大范式

你可能感兴趣的:(笔记,数据库,mysql,ER,数据关系,EER)