数据库实体关系模型 --- ER Model

2023-11-08

ER模型的作用

  • 数据库设计的第一步是需求分析阶段,也是最重要的一步
  • 需求分析阶段的主要工作是概念建模也就是ER建模, 将需求以ER图的方式进行可视化
  • ER图可以描述一个数据库的逻辑结构

ER模型的基本组成

  • 实体(entity): 最基本的数据成员,An entity is an object that exists and is distinguishable from other objects
  • For instance, Michelle Lee with S.S.N.890-12-3456 is an entity
  • 一个entity可以是concrete(一个人,一本书等) 也可以是abstract (比如假期或者疾病)
  • entity set:一组同一类型的entities组成了entity set
  • 比如银行的所有用户组成了一组entity set
  • entity set可以有重叠,比如Student 和 Professor这两个entity set可以有重复的entity,因为一个人可以是老师也可以是另外一节课的学生
  • 属性(attributes): 一个entity用一组attributes来表示,每一个attribute有一个对应的值,比如一个人可以有name,SSN,gender,phone number等attributes
  • relationship sets: the relationship between two entity sets.
  • domain: 一个attribute的domain是这个attribute值得有效范围,比如电话号码是一个十一位整数

E-R 图

ER图的基本组成

  • ER 图的基本组成结构有
  • 正方形 — 代表entity sets
  • 椭圆形 — 表示attributes
  • 菱形 — 表示relationship sets
  • 线条 — 链接attributes和entity sets,entity sets和relationship sets
    在这里插入图片描述

不同的键(Key)

超码: superkey

  • 能够用来定位关系表中entity的一个或多个属性 Example: {name,S.S.N} 就是super key

候选码: candidate key

  • 最小长度的超码

主键: primary key

  • DB设计者指定的candidate key用来区分不同的entity 用下划线表示
    在这里插入图片描述

外键 foreign key

  • 一个关系表(relation)的一组字段指向另外一个关系表(relation)的一行 (有点类似pointer)
  • 通过包含另外一个关系表(relation)的primary key实现

关于实体(Entity)

实体的四种关联关系 (Key Constraints)

  • One-to-one: A中的entity最多和一个B中的entity链接, B中的entity最多和一个A中的entity链接
  • One-to-many: A中的entity可以和很多个B中的entity链接, B中的entity最多和一个A中的entity链接
  • Many-to-one: A中的entity最多和一个B中的entity链接, B中的entity可以和很多个A中的entity链接
  • many-to-many: A中的entity可以和很多个B中的entity链接, B中的entity可以和很多个A中的entity链接
  • Example: many-to-one constraints
  • 一个指导老师可以指导很多学生,但是一个学生只能有一个指导老师
  • 我们可以用箭头表示这种关系
  • 箭头指向的是one 在这里插入图片描述
  • Example: one-to-one constraints
  • 一夫一妻就是one-to-one constraints
    在这里插入图片描述
  • Example: one-to-many constraints
  • 一个母亲有很多孩子
    在这里插入图片描述
  • Example: many-to-many constraints
  • 男生有很多女同学,女生也有很多女同学
    在这里插入图片描述

实体的参与限制(Participation Constraints)

  • total participantion:假如现在要创建一个 某市已婚人士 的数据库,则每个entity的participantion must be total, 也就是在这个数据库里每个entity都必须已婚
  • partial participation: 假如现在要创建一个 某市婚姻状况 的数据库,则不需要每个entity都有对象
  • 我们可以用加粗箭头表示 total participation
    在这里插入图片描述
  • partial participation在这里插入图片描述

弱实体 Weak Entity

  • weak entity set: 如果一个entity set无法找出主键, 则这个entity set是weak entity set
  • 比如下图就是weak entity set
    在这里插入图片描述
  • 为了能找出weak entity里的数据,需要把weak entity和strong entity的primary key相连, 被使用的primary key叫做identifying owner, 并且weak entity需要满足两个条件
  • weak entity必须是total participantion
  • identifying owner和weak entity必须是one-to-many关系
  • weak entity的主键:强实体的主键 + 弱实体的部分属性(partial key)
  • weak Enitty用两个方框表示
    在这里插入图片描述
    在这里插入图片描述

关于属性(Attribute)

多值属性 (Multivalue Attribute)

  • 首先构建一个有两列的schema
  • 第一列是有拥有这个多值属性的entity的primary key
  • 第二列是多值属性, 每一个cell对应一个值
  • 多值属性的primary key是所有属性的union
  • 用两个圈圈表示多值属性
  • Example:
    在这里插入图片描述

复合属性 (Composite Attribute)

  • 一个属性被分为多个属性表示
  • 每一个属性对应一列
  • composite attribute没有对应的列,是抽象属性
  • Example:
    在这里插入图片描述

衍生属性(Derived Attribute)

  • 一个属性从另外一个属性衍生出来,比如age来自生日等
    在这里插入图片描述

增强实体关系模型 — Enhanced Entity Relationship (EER Model)

什么是增强实体关系

  • 在ER模型中引入了 subclasses and superclasses, specializations and generalizations等概念

继承 — 父类和子类

  • 子类继承父类的所有属性和关系
  • 子类可以有独特的属性
    例子: SECRETARY有TypingSpeed属性, MANAGER有
    BusinessUnitManaged属性等
  • 圆圈和U型代表继承关系
    在这里插入图片描述
  • 一些约束
    在这里插入图片描述

Specialization

  • 自顶而下的将实体分为子类
    例子: EMPLOYEE -> SECRETARY, MANAGER, etc.

Generalization

  • 自底而上的将实体聚合
    例子: CAR (属性: color, price, max speed) 和 TRUCK (属性: color, price, tonnage) 可以构建父类 VEHICLE (属性: color and price).

设计ER需要考虑的因素

在这里插入图片描述

实体集 or 属性 (Entity set or Attribute)

  • 有时我们需要决定是否将一个property设置为一个atrribute或者设置成一个entity set
  • Example:电话号码设计成学生的属性还是设计成单独的entity set
  • 第二种设计方法的好处是可以处理一个学生可能有多个电话号码或者一个电话号码被好几个学生使用的情况在这里插入图片描述
  • Example 2:如何设计学生和学生地址之间的关系
    在这里插入图片描述

三元 or 二元 (Binary or Ternary)

三元关系例子:
在这里插入图片描述
三元 or 二元 ?

  • 通常如果不是确实需要三元关系,最好使用二元关系
  • 所有的三元关系以及更高元的关系都可以转变成二元关系
  • 三元关系在这里插入图片描述
  • 二元关系
    在这里插入图片描述

Example — 设计PhotoSmart的数据库

在这里插入图片描述
在这里插入图片描述

Example — 设计Yelp数据库

在这里插入图片描述

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

数据库实体关系模型 --- ER Model 的相关文章

  • 使用Docker-镜像命令

    镜像名称 首先来看下镜像的名称组成 镜名称一般分两部分组成 repository tag 在没有指定tag时 默认是latest 代表最新版本的镜像 如图 这里的mysql就是repository 5 7就是tag 合一起就是镜像名称 代表

随机推荐

  • C#--使用Process类kill进程

    1 背景 static变量 static变量也称作静态变量 静态变量和非静态变量的区别是 静态变量被所有的对象所共享 在内存中只有一个副本 它当且仅当在类初次加载时会被初始化 而非静态变量是对象所拥有的 在创建对象的时候被初始化 存在多个副
  • 使用 Qt designer

    使用 Qt designer 1 配置Qt designer外部工具 2 Qt designer Qt 设计师 使用 2 1 创建保存文件ui 2 2 pyuic5 exe 工具 转化成为py文件 2 3 直接导入UI文件 2 qrc资源管
  • C# 正则表达式进阶

    文章目录 限定开头和结尾 匹配汉字 1 9反向引用 分组构造 具名的分组构造 断言 零宽度正预测先行断言 断言某位置后面是xxx 零宽度负预测先行断言 断言某位置后面不是xxx 零宽度正预测后发断言 断言某位置前面是xxx 零宽度负预测后发
  • 第二十七篇 SeNet——论文翻译

    文章目录 摘要 1 简介 2 相关工作 3 压缩和激励块 3 1 压缩 全局信息嵌入 3 2激励 自适应再校正 3 3 实例化 4 模型和计算复杂性 5 实验 5 1 图像分类 5 2 场景分类 5 3 COCO上的目标检测 5 4 ILS
  • 保研之路——复旦计算机学院预推免

    复旦计算机学院预推免 个人情况 高校复试参与情况 复旦计算机学院直硕 9 19 9 20 结语 嗯 抱着不白花这么多路费住宿费的初衷准备写一个保研经验贴 希望学弟学妹少花点钱吧orz 我的战术大概是只要学校给我发了邀请我就去 除了时间冲突的
  • windows配置selenium

    文章目录 1 确定chrome版本 2 下载并配置chrome驱动 3 测试 1 确定chrome版本 在chrome中访问 chrome settings help 可以看到当前版本 111 0 5563 111 64位 2 下载并配置c
  • matlab读取sheet1_matlab读取excel数据的方法步骤详解

    在Excel中录入好数据以后经常需要被matlab读取 具体该如何读取呢 下面是由学习啦小编分享的matlab读取excel数据的方法 以供大家阅读和学习 matlab读取excel数据的方法 matlab读取Excel数据步骤1 如果数据
  • Vue/JS自定义指令:实现元素滑动、移动端适配以及边界处理

    核心属性 Element clientWidth 元素可视宽度 Element clientHeight 元素可视高度 MouseEvent clientX 鼠标相对于浏览器左上顶点的水平坐标 MouseEvent clientY 鼠标相对
  • 微服务如何治理

    微服务远程调用可能有如下问题 注册中心宕机 服务提供者B有节点宕机 服务消费者A和注册中心之间的网络不通 服务提供者B和注册中心之间的网络不通 服务消费者A和服务提供者B之间的网络不通 服务提供者B有些节点性能变慢 服务提供者B短时间内出现
  • 每日学习07:Comparable接口的CompareTo的用法

    接口 Comparable 此接口强行对实现它的每个类的对象进行整体排序 这种排序被称为类的自然排序 类的 compareTo 方法被称为它的自然比较方法 字符串 数组列表 数组 所有可以 排序 的类都实现了java lang Compar
  • ThinkPHP5.1开发企业微信支付到零钱

    Wxpay php
  • npm启动vue应用开发服务器过程分析

    关于 npm run serve 命令启动vue应用开发环境的过程分析 1 npm run 命令执行时 npm run 命令执行时 会把 node modules bin目录添加到执行环境的PATH变量中 全局的没有安装的包 在node m
  • 本地IDEA中使用SonarQube扫描代码

    文章目录 背景 步骤 安装插件 配置 使用 背景 为了提高效率 在走代码CICD流程里的Sonarqube之前 先在本地提前进行一次扫描和修复 步骤 安装插件 2种方式 在IDE的插件管理中心安装名为 SonarQube Community
  • 爬虫高级应用(15. 基于Charles抓包软件抓取手机APP数据)

    目录 写在前面 配置安装Charles 安装Charles 下载相关证书 电脑证书 手机证书 设置代理 实操案例 抓取手机APP爱吾游戏宝盒数据 写在前面 移动App多使用异步的方式从服务端获取数据 抓取数据之前 要先分析移动App用于获取
  • 线性代数 --- 线性代数基本定理下(四个基本子空间他们两两正交,且互为正交补)

    正交子空间 前面我们已经知道了 两个向量的内积为0是勾股定理的另一种表现形式 现在我们来研究一下两个子空间之间的正交 虽然 我很不喜欢一上来就先给个定义 但我这里还是要给 sorry 现有两个子空间V和W 如果V中的任何一个向量v和W中的任
  • deepsort算法原理以及代码解析

    概述 前边我们讲了sort算法的原理 并且指出了它的不足 IDsw过大 为了解决该问题 17年时候sort算法的团队又提出了DeepSort算法 Deepsort在原来Sort算法的基础上 改进了以下内容 使用级联匹配算法 针对每一个检测器
  • .NET通用开发框架

    在开源中国社区 简单整理了下比较好的 NET通用开发框架 一个好的通用框架大概包括 开源 扩展性好 灵活性好 复用性好 维护性好 易测试 易发布 易部署 快速业务搭建 或业务集成 通用性强 参考资料多 持续技术支持 社区疑难问题建设 NET
  • 顺序表的基本操作(初始化、插入、删除、查询、扩容、打印、清空等)

    顺序表的基本操作 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构 一般情况下采用数组存储 在数组上完成数据的增删查改等基本操作 初始化 初始化结构体 开辟空间 void SeqListInit SeqList ps size
  • TypeScript 中的 any、unknown、never 和 void

    any any 表示 任意类型 它是任意类型的父类 任意类型的值都可以赋予给 any 类型 编译不会报错 let anything any 前端西瓜哥 let flag boolean true anything flag anything
  • 数据库实体关系模型 --- ER Model

    数据库实体关系图 The Entity Relationship Model ER Model ER模型的作用 ER模型的基本组成 E R 图 ER图的基本组成 不同的键 Key 超码 superkey 候选码 candidate key