数据库-ER建模

2023-10-29

在建设数据库过程中,最重要的是,需求分析阶段。这一步决定了数据库项目的成败。
需求分析阶段,也叫做ER建模,【rentity-relationship modeling】也叫做需求可视化,概念建模。这个结阶段需要数据库开发人员和需求方以ER图的方式,对业务需求进行,可视化展现。

基本概念

1. 实体 entity

实体表示客观世界中众多的概念,比如:人,地点,事件。
每个实体包含了多个实体成员。实体人可能是小王,小张;地点是篮球场,操场等。
ER图中,用矩形表示实体:

在这里插入图片描述

2. 属性 attribute

每个实体都有属性,比如:人的名字,人的性别,人的年龄等;在ER图中用椭圆表示实体的特征。属性等同于特征。

在这里插入图片描述
每个属性至少有一个唯一属性,要用下划线标记,比如id字段就是唯一的。

3. 联系 relation

实体和实体间通常有某种关联,在ER图中菱形表示。比如某一个员工向主管汇报,如图:
在这里插入图片描述
在实体和实体之间的连线上,有一些符号。
这些符号叫做基数约束

参考理解
联系: 用菱形表示,菱形框里阿米哪些联系名,并将相关的实体连接起来,同时在旁边标上类型, 是1:1,或者1:n或者m:n 。比如下图中的班级和学生组成关系,老师和课程有任课关系。
在这里插入图片描述

3.1 基数约束的四种形态
3.1.1 基数约束形态一

在这里插入图片描述
表示强制多个对应,一个实体A对应多个实体B。

3.1.2 基数约束形态二

在这里插入图片描述
表示可选多个对应,一个实体A可对应0个或者多个实体B。

3.1.3 基数约束形态三

在这里插入图片描述
表示强制单个对应,一个实体A对应一个实体B。

3.1.4 基数约束形态四

在这里插入图片描述
表示可选单个对应,一个实体A对应0个或者1个实体B。

综上所述:
符号部分分为了两个部分:左边要么是竖杠要么圆圈;右边要么是竖杠要么是开口的三角。
左边的竖杠:强制对应;
左边的圆圈:可选对应;
右边的竖杠:对应0个或者1个实体;
右边的三角:对应1个或者多个实体;
最终有4种组合。

联系都是双向的,实际建模常见的是这样:
在这里插入图片描述
上面的解读是:实体A对应0个或者1个实体B,同时,实体B对应1个或者多个实体A。

扩展概念

以上是基础ER建模。为了更细致的刻画用户需求,又出现了下面的建模规则。

1. 复合属性 composite attribute

有的属性具有复合特点,比如地址属性,地址包含了省份,城市,等子属性。
ER图上这类属性的属性,用圆括号标记,扩展为多个子属性。参考下图的商店实体定义:
在这里插入图片描述
STORE为实体,storeId是唯一属性,所以用下划线标识;storeAddress是store的直接属性,storeAddress属性还有自己的子属性。

2. 多指属性 multivalued attribute

有的属性具有多个值,比如一个人可能有多个电话号码。
ER图上用双层椭圆标识:
在这里插入图片描述

3. 派生属性 derives attribute

有的属性,可以从其他属性或者其他数据派生出来,这类属性在ER图上用虚线椭圆标识。
在这里插入图片描述
上图中的YearsInBusiness属性,表示店铺开张了多少年,这个属性可以结合OpeningDate属性计算出来。所以可算作是派生属性。

4. 可选属性 optional attribute

有些属性可能没有取值,比如奖金。
ER图上这样的属性后面添加(O)标识。

在这里插入图片描述

5. 联系的进一步描述

a. 可以在关联中,表示出最大最小基数。
在这里插入图片描述
上图表示:1个学生对应到了2到6间教室;1个教室对应了5到40个学生。

b. 也可以在关联中说明关联的关系。下面是一种较常见的一元关联:
在这里插入图片描述
左边的单词是recipient【接受】,右边是giver【送出】
每个人只能给其他人一份礼物,但是可以收到0或者多份礼物。

6. 关联实体

关联实体用于描述 M:N 关联的一个替代方法。用一个内部菱形表示,这个实体没有唯一属性也没有唯一属性,就是没有任何属性。

图1
图2
以上2个图,是等价的。
关联实体基本是用在多对多的场景下,后续会讲到。

7. 弱实体

一般,实体至少要有一个唯一属性。这样才能精确的定位到要处理的数据。但是在ER建模这一层,也并非总是如此。
举例子:假如现在需要为连锁酒店系统进行ER建模。现在记录下各地酒店的房间使用情况。可以将房间的使用相关信息作为酒店的建模的一个多值复合属性。如图:
在这里插入图片描述
这样做是没有问题。但是没有体现出部分码的地位,就是没有RoomId在各个BuildingId的唯一性。同时,很多时候也需要将房间这个实体和其他实体关联。比如每个房间的清洁工。
引入弱实体机制后,就能解决这个问题。

在这里插入图片描述
两个地方要注意:
(1) 弱实体的主码,成为部分码。码名下方用虚线表示。上面的Room就是弱实体。
(2)弱实体至少要有一个属主实体。即Room弱实体至少要属于Building这一个实体。还可以属于其他实体。弱实体和属主实体之间(Room弱实体和Building实体之间)用双菱形标识。弱实体的部分码和同属主实体的候选码的组合可以定位到唯一的弱实体的记录。
(3)上面的说的码,个人理解的就是键。部分码就是弱实体中的唯一id,作为键;
主实体中主码是主键;候选码是属于主实体的,但是应该是不同于主码的。

高级部分

下面这部分本人是没理解很明白。

1. 相同实体之间具有u多个M:N 关系

某人为一个学生选课系统进行ER建模,得到如下结果:
在这里插入图片描述
假如需求中有说明:一个同学一门课只能选一次,那这样的设计没问题。可是如果需求中说明,一个同学可以选一门课几次(可能是挂了好几次),这样的设计就有问题了。
对此,正确的做法之一是使用有两个属主实体的弱实体:
在这里插入图片描述
或者为每次预定生成一个唯一的id,如下图所示:

在这里插入图片描述

2. 三元(或更多)关系

在ER图中,联系一般是将两个实体关联起来,又或者自己关联自己。但是也有些时候,需求方需要同时将多个实体联系起来。这怎么办呢?要知道表示联系的菱形有且只有两个接口。
答曰:使用关联实体。下面这个ER图中,使用了关联实体描述了某工厂的供货商,生产产品,零件三方联系:
在这里插入图片描述
但如果现在需求又变更了,需要给关联增加某些属性,比如说供货商每次提供的货物量,这个ER图就不能用了。
因为这样就没办法区分同一家供应商为同一产品提供等数量的同一零件的不同实例了。解决的办法是把关联实体改成一般的实体,并增设一个唯一标识符:
在这里插入图片描述

说明

建模工具可使用PowerDesigner,Workbench等,对于Mac系统可以使用mysql workbench。这里推荐一款轻量级的在线数据库建模工具,网址是https://erdplus.com/#;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库-ER建模 的相关文章

  • 虚拟服务器vps怎么扩展,vps虚拟服务器怎么用

    vps虚拟服务器怎么用 内容精选 换一换 裸金属服务器具备物理机级的性能和隔离性 用户独占计算资源 并且无任何虚拟化开销 存储在高性能高可靠的服务器上的数据 自然也会很安全 带有本地磁盘的裸金属服务器 支持本地磁盘组RAID 磁盘数据冗余存
  • SpringCloud Alibaba 组件介绍

    Spring Cloud Alibaba 一 介绍Spring Cloud Alibaba 简介 spring cloud Netflix 相关技术整体进入维护模式 Ribbon Hystrix zuul Eureka config等 sp

随机推荐

  • Vue课后练习题及答案解析

    Vue课后练习题 第一章 Vue js基础入门 填空题 Vue是一套构建 的渐进式框架 用户界面 MVVM主要包含3个部分 分别是Model View和 ViewModel Vue中通过 属性获取相应的DOM元素 refs 在进行Vue调试
  • html a标签去掉下划线_HTML常用标签a、img、table

    HTML常用标签 a 标签的用法 标签定义超链接 用于从一张页面链接到另一张页面 主要属性有href target download rel等 href指示超链接目标 可以取网址 相对路径 绝对路径 伪协议进行跳转 target属性规定在何
  • 【SpringBoot】最通俗易懂的任务机制(一)--异步任务和定时任务

    注 本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写 代码简单 较容易理解 若有问题或者源码资料获取可以在评论区留言或者联系作者 目录 导引 异步任务 没有返回值的异步任务 有返回值的异步任务 定时任务 总结 导引 开发w
  • springboot自定义favicon.ico

    Favicon配置 说到favicon ico这个小图标 Spring Boot提供了默认的小叶子 如果大家想定制这个小图标可通过以下做法 1 application properties spring mvc favicon enable
  • QObject::connect: No such signal 原因

    QObject connect No such signal 使用connect连接信号与槽函数时 附带了信号或者槽函数的参数 编译会通过 而运行不会通过 若信号函数 void signal 1 int param 槽函数 void fun
  • ssh连接localhost失败 permission deny问题解决

    首先确认ssh 和 sshd都已经正常安装且运行 其次设置ssh和sshd的一些系统参数 基本都是修改以下这两个文件 1 etc ssh ssh config 2 etc ssh sshd config 比如permitrootlogin
  • 如何使用 docker 搭建本地 overleaf 服务器

    如何使用 docker 搭建本地 overleaf 服务器 overleaf 使用便捷 相信很多人都在上面编辑过论文 但是国内访问 overleaf 确实网速限制比较大 编译时等待时间较长 而且中文字体等配置也不是很方便 应运而生的 ove
  • 自动化测试之 Espresso VS Appium

    前言 事情的起因是这样的 相信很多人都经历过这样一个过程 一个成熟的线上app版本需要更新一个系列新功能的时候 我们上线需要完成以下几个步骤 1 测试环境下 测试人员测试新功能 并且连带需要测试线上稳定版本的主要老功能 2 确保没问题以后
  • B树与B+树

    一 B树 B 树 特点 1 多路 非二叉树 2 每个节点既保存索引 又保存数据 3 搜索时相当于二分查找 二 B 树 特点 1 多路非二叉 2 只有叶子节点保存数据 3 搜索时相当于二分查找 4 增加了相邻接点的指向指针 三 B树与B 树的
  • 决策树和 K 近邻分类

    决策树和 K 近邻分类 决策树和 K 近邻分类 决策树和 K 近邻分类 介绍 知识点 机器学习介绍 示例 决策树 如何构建决策树 熵 玩具示例 决策树构建算法 分类问题中其他的分割质量标准 示例 树的关键参数
  • CUnit的用法

    CUnit下载地址 http sourceforge net projects cunit CUnit 在线文档帮助 http cunit sourceforge net doc index html 关于CUnit 本文主要从介绍三方面的
  • Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一 前言二 环境准备三 Corosync 安装与配置四 Pacemaker 安装与配置五 DRBD 安装与配置六 MySQL 安装与配置七 crmsh 资源管理 推荐阅读 Linux 高可用 HA 集群基本概念详解 http www l
  • c语言中delay的用法。

    C语言作为一门新型高级编程语言 在计算机软件编程中具有较为广泛的应用和实现 下面小编就跟你们详细介绍下c语言中delay的用法 希望对你们有用 c语言中delay的用法如下 假设一个延时函数如下 void delay uint i for
  • Unity 动态生成mesh圆圈

    using UnityEngine using System Collections RequireComponent typeof MeshRenderer typeof MeshFilter public class yuan Mono
  • BIOS中开启虚拟化技术

    安装Intel Hardware Accelerated Execution Manager 为了避免Android虚拟设备创建过程中发生错误 下载地址 https software intel com en us android arti
  • 闲置资源优化,轻松检查集群中的空闲成本

    前言 Kubernetes 提供了对计算 网络 存储资源的抽象 提升了集群资源管理的效率 然而 由于用户不需要直接管理底层资源 可能导致部分闲置资源未及时发现 造成成本浪费 在企业 IT 成本治理过程中 如何发现并处理这部分资源 是成本优化
  • Nvidia Deepstream极致细节:3. Deepstream Python RTSP视频输出显示

    Nvidia Deepstream极致细节 3 Deepstream Python RTSP视频输出显示 此章节将详细对官方案例 deepstream test 1 rtsp out py作解读 deepstream test 1 rtsp
  • Buuctf——[RCTF2015]EasySQL

    Buuctf RCTF2015 EasySQL 一 解题步骤 1 看到注册登录 闲着没事先注册个号试试 1 123 2 进去看了 除了受到文化熏陶 别的好像没有啥 点一下试试其有什么功能 一不小心就看到了修改密码 3 惊奇的发现 密码可以被
  • 【数据结构】二、顺序表的定义和基本操作的实现

    目录 数据结构 DATA STRUCTURE 二 线性表 2 1 线性表的定义和基本操作概述 2 2 线性表的顺序表示 2 2 1 顺序表存储结构描述和特点 1 静态存储方式 2 动态存储方式 3 顺序表的优缺点 2 2 2 顺序表基本操作
  • 数据库-ER建模

    目录 基本概念 1 实体 entity 2 属性 attribute 3 联系 relation 3 1 基数约束的四种形态 3 1 1 基数约束形态一 3 1 2 基数约束形态二 3 1 3 基数约束形态三 3 1 4 基数约束形态四 扩