数据库的设计通常需要经历四个部分:

  1. 需求收集与分析(Requirements Collection and Analysis)
  2. 概念设计(Conceptual Design) —— 设计实体关系模型 (ER Model)
  3. 逻辑设计(Logical Design)—— 实现从 ER 模型到关系模式(Relation Schemas)的转换。
  4. 物理设计(Physical Design)

本文主要介绍一下概念设计的部分。

概念设计

概念设计是一个构建概念数据模型的过程,这个概念数据模型在抽象的高层建模;需要足够简单且通常是图形化的;并且能够用于与非技术用户交流数据库的需求。这里主要介绍如何使用 ER 模型来实现概念设计。

ER 模型

ER 模型主要有三个关键方面:

  1. 数据结构:ER 模型中的数据表现为实体与属性之间的关系
  2. 数据完整性:对于ER模型,键(key)用于实体或者关系类型,而基数约束或者参与约束用于关系类型。
  3. 数据操作:ER 模型中不存在对数据的任何操作。

ER 模型中的关键概念与关系型数据库的概念联系如下:

关系型数据库

实体关系模型

属性

超键 / 主键 / 候选键

元组

实体 / 关系

关系

实体集合 / 关系集合

关系模型

实体类型 / 关系类型

ER 模型的基本图表元素有:

属性(椭圆) 用于描述实体或者关系的性能或者特征

主要属性(内含下划线的椭圆) 能够用于识别特定实体的属性

实体(长方形) 在现实世界中独立存在的单一个体类别

关系(菱形) 实体之间的联系

实体类型与实体集合

实体类型定义了一个拥有相同属性的实体的集合。

实体集合是指在特定时间下,数据库中所有实体类型的集合。

对于某一个特定的实体以及其属性,可以用下面的形式表示:

实体名为员工(Employee),该实体类型的属性包括工号(SSN)、姓名,工资和地址。需要注意的是,在这里工号是主属性(下划线),地址是一个多值属性(双椭圆),意味着地址这个属性对于同一个实体而言,允许拥有一个或者一个以上的值。

弱实体类型

弱实体类型指的是一个实体类型没有足够的属性来构建一个能够识别特定个体的主键,因此它需要依赖一个能够被确定的实体才能存在。弱实体类型必须拥有一个或者多个属性,其中包括弱主键,与其所依赖的实体的主键共同作为该弱实体类型的主键,从而识别特定的个体。表示如下:

在这里,儿童(Child)是一个弱实体类型,不同的儿童可能会拥有相同的姓名和年龄,因此把儿童这个实体与员工建立依赖关系,其关系为员工-拥有(has)-儿童,通过 SSN 和 Cname 共同构建能够识别特定儿童的主键。

关系类型与关系集合

关系类型指的是多个实体之间的联系,该联系允许拥有隶属于这段联系的独立的属性。

关系集合指的是某个特定关系类型联系的所有实体的集合。

表示形式如下:

这里有两个实体,员工(Employee)和部门(Department),员工在部门里工作,这是它们之间的关系。

在现实世界里,实际上还可能会出现更加复杂的实体关系模型,比如递归关系:

在这里,员工之间存在监督者与下属之间的关系,监督者监管下属,而监督者和下属同样都属于员工,并且拥有员工的属性。

还有更高程度的关系:

在这个关系里,提供商(Supplier)为项目(Project)提供零件(Part),因此提供(Supply)这个关系同时涉及到三个实体,且该关系还具有数量(Quantity)这个属性。

关系中的约束

ER 模型中的约束关系通常是指实体与实体之间基于某种关系下的约束。主要包括两种:

  • 基数比例(Cardinality ratios):指定实体允许参与到关系中的最大数目。
  • 参与约束(Participation constraints):指定某个实体在其与其他实体的依赖关系中是否必然存在。

基数比例(Cardinality ratios)

基数比例的类型主要有三种:多对多(Many-To-Many)、一对多(One-To-Many)、一对一(One-To-One)。

  • 多对多(Many-To-Many)

含义:一名员工可以为多个部门工作;一个部门里允许拥有多名员工。

  • 一对多(One-To-Many)

含义:一名员工最多只能为一个部门工作;一个部门里允许拥有多名员工。

  • 一对一(One-To-One)

含义:一名员工最多只能为一个部门工作;一个部门里最多只允许有一个员工。(虽然这不符合现实。。。)

在以上三种类型的基础上,ER 模型还延伸出一种约束:基数限制。主要含义就是通过一个整数来指定两个实体在关系中允许参与的数量范围。表示如下:

含义:一个员工必须为一个且最多一个部门工作;一个部门必须拥有一个或者多个员工。

参与约束(Participation constraints)

参与约束主要分为两种:完全参与(Total)和局部参与(Partial)。一般情况下,默认为局部参与。

  • 完全参与(Total)

含义:每一名员工必须为一个部门工作;一个部门可能有或者没有员工。

  • 局部参与(Partial)

含义:一名员工可能有或者没有为一个部门工作;一个部门可能有或者没有员工。

实体类型中的父类与子类

实体类型的父类与子类指的是拥有不同名称的同一个概念,子类通常是父类实体根据其具体的应用意义所采用的的更加显式的表达。父类与子类之间的关系被称为 ISA 关系类型

专门化(Specialisation)与一般化(Generalisation)

专门化指的是自上而下定义一个实体所拥有的子类的集合。

一般化指的是自下而上地把拥有共同属性的多个子类归纳成一个单一的父类。

在上图中,员工(Employee)是父类,其子类根据不同的实际意义分别为秘书(Secretary)、技术员(Technician)和工程师(Engineer)。该图实现专门后就能得到下面的图:

图中的三个子类通过一般化以后,就能得到前一个图。

分离约束(Disjointness constraint)

分离约束主要是用于指定通过专门化产生的子类之间的关系。子类间的分离约束主要有两个方面:

  • 分离(disjoint):子类的各个实体之间完全分离,不存在任何交集。
  • 重叠(overlap):子类的各个实体之间可能存在某些交集,即某个父类的实体,既可以当做其中一个子类实体,也能当做另一个子类实体。

不同的分离约束在 ER 模型中的表示形式如下:

完整性约束(Completeness constraint)

  • 完全约束(Total):每一个父类的实体必然属于至少一个子类的成员。
  • 部分约束(Partial):父类的实体可能不属于任何一个子类(默认约束)。

构建 ER 模型的流程

  1. 识别所以实体类型(包括弱实体类型);
  2. 识别所有关系类型(包括 ISA 关系和依赖关联);
  3. 识别所有实体和关系类型对应的属性(以及每个属性的定义域);
  4. 识别每个实体的主键;
  5. 辨别步骤 2 中找出的所有关系中的基数比例;
  6. 确定上述关系的参与约束;
  7. 确定 ISA 关系中的分离约束和完整性约束。

软件支持

网络上有很多软件能够用来画 ER 模型,比较常用的一个轻量级软件是 TerraER, 它是一个基于 JRE 运行的软件,支持Windows,Mac,Linux环境,能够生成 ER 模型的 XML 文件以及 JPEG 图片。

下载链接:https://github.com/rterrabh/TerraER/releases/download/TerraER3.01/TerraER3.01beta.jar

【数据库】数据库入门(五): 实体关系模型 (Entity-Relationship Model)相关推荐

  1. er图转为数据流程图_「数据架构」实体关系模型介绍

    实体-关系模型(或ER模型)描述特定知识领域中相关的事物.基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成. 在软件工程中,为了执行业务流程,E ...

  2. 「数据架构」实体关系模型溯源

    实体-关系模型(或ER模型)描述特定知识领域中相关的事物.基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成. 在软件工程中,为了执行业务流程,E ...

  3. 实体 联系 模型mysql_实体关系模型和关系模型之间有什么区别?

    你有倒退. ER模型中的关系是显式定义的,而在关系模型中则是隐式的. 否.每个关系模型(RM)数据库基表和查询结果都代表一个应用程序关系.实体关系建模(E-RM)模式只是一种组织(但使用不足和指定不足 ...

  4. 零基础入门--中文实体关系抽取(BiLSTM+attention,含代码)

    前面写过一片实体抽取的入门,实体关系抽取就是在实体抽取的基础上,找出两个实体之间的关系. 本文使用的是BiLSTM+attention模型,代码在这里,不定期对代码进行修改添加优化. 数据处理 其实数 ...

  5. 东北大学软件学院数据库系统概述第二章(关系模型)

    数据库第二章(关系模型) 目录 数据库第二章(关系模型) 1.关系数据库的结构: 2.基本关系代数运算 3.其他关系代数运算 4.扩展关系代数运算 5.空值 6.修改数据库 1.关系数据库的结构: 定 ...

  6. MySQL 学习笔记(14)— 数据库设计流程、实体关系图、第一范式、第二范式、第三范式、外键使用

    本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92c12a9c3a53bc3800f0c 1. 数据库设计流程 数据库设计是对数据 ...

  7. 【数据库】E-R图向关系模型转换的规则

    E-R图向关系模型转换的规则: (1) 一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码(关键字)就是关系的码. (2) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对 ...

  8. 建立实体-关系模型1

    1.标识实体: 通常有用户.角色这两个实体. 2.标识关系: 用户与角色间为多对多的互相拥有关系. 3.标识实体.关系的属性: 不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在 ...

  9. 建立实体-关系模型4

    7.检查模型: (1)检查冗余 (2)检查业务

  10. 建立实体-关系模型3

    5.确定键:键就是可用于标识实体的属性,有:主键.唯一键.外键. 6.实体的特化/泛化: 也就是面向对象模型中父类和子类的概念,这是个可选的步骤.

最新文章

  1. SAP MM 采购申请中的物料组字段改成Optional
  2. 用于模拟短信群发情况的随机数产生
  3. linux centos 开机关机背景画面 设置
  4. mysql jdbc dbcp_连接数据库 JDBC、DBCP、JNDI
  5. Nginx 负载均衡4种模式
  6. Windows Server 2008虚拟化功能解析
  7. 再谈RDD、DataFrame、DataSet关系以及相互转换(JAVA API)
  8. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink
  9. oracle空例程,2018.5.29 Oracle连接到空闲例程
  10. Java并发篇_进程线程
  11. 「雕爷学编程」Arduino动手做(24)——水位传感器模块
  12. CSS文本溢出的处理方法总结
  13. 随想录(vc仿真下的嵌入式开发)
  14. Ubuntu下修改root密码
  15. Android应用程序开发期末大作业(2)
  16. 浙大PAT练习题1010
  17. win7计算机excel快捷键,excel快捷键大全 公式
  18. 链游玩家寻找新一代武侠小说掌门人,签约青年武侠作家常博涵
  19. 【如何注销华为云账号(解绑合作伙伴)】
  20. wyAPP苹果APP 营销

热门文章

  1. 不想用win11了怎么办?一分钟教你win11退回到win10系统
  2. java.lang.IllegalArgumentException: Address 127.0.0.1:5672:5672 seems to contain an unquoted IPv6
  3. 数据分析入门:15种EXCEL数据分析功能
  4. 大韩航空如何成为一流航空——等级文化与称呼的改变
  5. uniapp开发关于视频播放器适配H5的全屏(横屏)操作
  6. ie地址栏不能识别中文参数(google浏览器是正常的)
  7. 计算机基本信息分别代表什么意思,视频基本信息格式不正确是什么意思
  8. python因子分析案例_因子分析及python实现(一)
  9. 哈希---平方探测法
  10. 郭敏:高速公路“过山车”式限速乱象的根本并非技术问题,而是管理协作机制缺位...