【如此简单!数据库入门系列】之ER模型快速入门

文章目录

  • 模式设计
  • 基本概念
    • 实体(Entity)
    • 属性(Attributes)
    • 实体集和键(key)
    • 关系(Relationship)
  • ER图
    • 实体和属性
    • 关系
  • 泛化与特化
  • 总结
  • 更多例子


模式设计

大家还记得什么是物理模式、概念模式和外部模式吗?

如何设计好的概念模式?这就要用到E-R模型。

E-R(Entity-Relationship)模型:

  • 定义了数据库的概念模式
  • 反映了现实世界中实体和它们之间的关联(数据库中表的结构和关系)
  • 有助于确保数据库能够有效地存储和管理数据

基本概念

实体(Entity)

实体:

  • 是现实世界的对象,很容易识别,可以是有生命,也可以是无生命
  • 是对象的抽象,而实体集是该对象实例的集合
  • 都有一些赋予它们身份的属性

例如,在学校数据库中,可以将学生、教师、班级和提供的课程视为实体。学生集合可以包含一个学校的所有学生。

属性(Attributes)

属性:

  • 表示一个实体。例如,学生实体可以将姓名、班级和年龄作为属性。
  • 有合理的类型和值。例如,学生的姓名不能是数字,学生的年龄不能是负数等等。

属性的类型包括:

  • 能不能分割:
    • 简单属性:原子值,不能再分。例如,学生的电话号码是10位数字的原子值。
    • 复合属性:由多个简单属性组成。例如,学生的完整姓名可能包含姓和名。
  • 是不是原生:
    • 原生属性:数据库中存在的属性。例如,学生的生日。
    • 派生属性:数据库中不存在的属性,从存在的其它属性派生出来的属性。例如,年龄可以从生日派生出来。再比如,一个班级的平均年龄不应该直接保存在数据库中,而是应该计算出来的。
  • 是不是唯一:
    • 单值属性:单值属性包含单个值。例如,学生的学号。
    • 多值属性:多值属性可以包含多个值。例如,一个人可以有多个电话号码。

当然,这些类型可以组合在一起使用:

  • 简单 - 单值属性
  • 简单 - 多值属性
  • 复合 - 单值属性
  • 复合 - 多值属性

实体集和键(key)

键是在实体集中,用于唯一标识一个实例的属性或属性集合。

例如,学生的学号可以唯一标识一名学生。

  • 超键:一个或多个属性的集合,用于标识实体集中的一个实例。
  • 候选键:最小规模的超键称为候选键。一个实体集可以有多个候选键。
  • 主键:从候选键里挑选,用于唯一标识实体集。

例如,假设有一个学生实体:{学号,姓名,地址,电话号码,特长},其中:

  • 超键,{学号}和{姓名,地址,电话号码}都是
  • 候选键,{学号}和{姓名,地址}都是
  • 主键,{学号}或者{姓名,地址}挑一个

关系(Relationship)

关系:

  • 表示实体之间的关联。例如,一个员工在一个部门工作,一个学生注册了一门课程,这里的工作和注册都是关系。
  • 也可以有属性,成为描述性属性。

关系的度:

  • 由参与关系的实体的数量决定,可以分为:
    • 2度,两个实体参与 --> 二元关系
    • 3度,三个实体参与 --> 三元关系
    • N度,N个实体参与 --> N元关系

关系基数:

  • 由一个实体集中的实体实例数量,与另一个实体集中的实体实例数量的关联情况决定
  • 可以分为:
    • 一对一:实体集A中的一个实体实例只能与实体集B中的一个实体实例相关联,反之亦然。
    • 一对多:实体集A中的一个实体实例可以与实体集B中的多个实体实例关联,而实体集B中的一个实体实例最多只能与实体集A中的一个实体实例关联。
    • 多对一:实体集A中的多个实体实例只能与实体集B中的一个实体实例相关联,但实体集B中的一个实体实例可以与实体集A中的多个实体实例相关联。
    • 多对多:实体集A中的一个实体实例可以关联到B中的多个实体实例,反之亦然。

在这里插入图片描述


ER图

接下来,讨论一下如何用ER图表示ER模型。实体、实体的属性、关系集和关系集的属性,都可以在ER图中表示。

实体和属性

在这里插入图片描述
实体和属性的表示方法:

  • 实体用矩形表示,例如Student
  • 属性用椭圆表示,每个椭圆代表一个属性,属性直接连接到实体上,例如Name
  • 如果属性是复合的,则将它们进一步划分为树状结构。例如Name由FirstName和LastName组成
  • 多值属性用双椭圆表示,例如PhoneNo.
  • 派生属性用虚线椭圆表示,例如Age

关系

关系的表示方法:

  • 关系由菱形框表示,关系的名称写在菱形框内
  • 所有参与关系的实体都通过一条线连接到它

二元关系(度数为2的关系)和基数的表示方法如下:
在这里插入图片描述
参与约束,根据实体实例参与情况,可以分为:

  • 完全参与 :每个实体实例都参与到关系中,用双线表示。
  • 部分参与 :不是所有实体实例都参与到关系中,用单线表示。
    在这里插入图片描述

泛化与特化

在这里插入图片描述

ER模型可以表达处于不同抽象层次的实体。越往上走,抽象层次越高,称之为泛化。相对的,越往下走,抽象层次越低,称之为特化。

例如,Person是高层次抽象,Student和Teacher是低层次抽象,Student和Teacher都属于Person,这是泛化过程,Persion包含Student和Teacher是特化过程。

继承:

  • 是泛化和特化的一个重要特征
  • 允许低级实体继承高级实体的属性。例如,Person的属性(Name, Age和Gender)可以被Student或Teacher继承

总结

使用ER模型究竟能带来什么好处呢?

  • 数据建模的标准化方法:标准化意味着便于沟通,并与让不同的利益相关者(例如业务分析师、数据库设计人员和软件开发人员)达成共识
  • 易于理解和沟通:ER图非常直观,对于非技术人员也能很好理解,有助于促进业务和 IT 部门之间的协作,确保数据模型满足业务需求
  • 数据库设计的坚实基础:ER 模型可以转换为各种数据库模式,包括关系数据库、NoSQL 数据库和面向对象数据库
  • 支持复杂的数据结构:ER 模型支持各种建模概念,包括复合类型、继承和聚合,便于对复杂的数据结构进行建模

此外,从数据管理的角度来讲,还有以下好处:

  • 减少数据冗余:ER 模型有助于识别和消除冗余数据,提高数据质量并减少存储空间
  • 提高数据完整性:ER 模型中的约束有助于确保数据完整性
  • 支持应用程序开发:ER 模型可以作为应用程序开发的基础,有助于确保应用程序与底层数据库结构保持一致

更多例子

下面的图能看懂了吗?

医院的ER模型

公司ER模型
在这里插入图片描述

如果喜欢这篇文章,请不要忘记关注、点赞和收藏哦!
您的鼓励将是我创作的最大动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/650886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git--基础学习--面向企业--持续更新

一、基础学习 1.1基本命令 //查询基础信息 git config --global --list //选取合适位置创建 mkdir 文件名 //创建文件夹 //全局配置 git config --global user.email "****e***i" git config --global user.name "*** K****"//--------------------进入…

网传Llama 3比肩GPT-4?别闹了

相信大家近期都被Llama 3刷屏了。Llama 3的预训练数据达到了15万亿,是Llama 2的7倍;微调数据用了100万条人工标注数据,是Llama 2的10倍。 足以看出Meta训练Llama 3 是下了大血本的。开源社区拥抱Llama3也是空前热烈,发布才4天Hug…

Kafka 消费者应用解析

目录 1、Kafka 消费方式 2、Kafka 消费者工作流程 2.1、消费者工作流程 2.2、消费组者说明 1、消费者组 2、消费者组初始化流程 3、消费者 API 3.1、独立消费者-订阅主题 3.2、独立消费者-订阅分区 3.3、消费组 4、分区的分配策略以及再平衡 4.1、Range 策略 1、R…

win11 修改hosts提示无权限

win11下hosts的文件路径 C:\Windows\System32\drivers\etc>hosts修改文件后提示无权限。 我做了好几个尝试,都没个啥用~比如:右键 管理员身份运行,在其他版本的windows上可行,但是win11不行,我用的是微软账号登录的…

为什么单片机控制电机需要加电机驱动

通常很多地方只是单纯的单片机MCU没有对电机的驱动能力,或者是介绍关于电机驱动的作用,如: 提高电机的效率和精度。驱动器采用先进的电子技术和控制算法,能够精准控制电机的参数和运行状态,提高了电机的效率和精度。拓…

《第二行代码》第二版学习笔记(6)——内容提供器

文章目录 一 运行时权限2.权限分类3 运行时申请权限 二、内容提供器1、 ContentResolver的基本用法2、现有的内容提供器3、创建自己的内容提供器2.1 创建内容提供器的步骤2.2 跨程序数据共享 内容提供器(Content Provider)主要用于在不同的应用程序之间实…

普通人与AIGC的日常

AIGC时代之前 当ChatGPT3还没有推出来之前,可以肯定的是绝大多数的人没有接触过生成式AI,也不知道什么是生成式AI,更别说生成式AI能为我们做些什么了。 以前上网找资料,一般都是通过搜索引擎,比如国内的百度&#xf…

material3 中底部弹窗ModalBottomSheet

material3 中底部弹窗ModalBottomSheet 相关源码错误示范正确操作 由于ModalBottomSheetLayout在material3中被抛弃&#xff0c;所以采用ModalBottomSheet 相关源码 /*** <a href"https://m3.material.io/components/bottom-sheets/overview" class"extern…

2024中国航空航天暨无人机展诚邀全国相关商协会组团参展

2024中国航空航天暨无人机展诚邀全国相关商协会组团参展 2024中国航空航天暨无人机展览会诚邀全国各关联商会、协会&#xff0c;联盟、各专业会展公司、各级城市政府及关联产业园区、各关联网站报纸杂志及平台等组团参展 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民…

JTAG访问xilinx FPGA的IDCODE

之前调试过xilinx的XVC&#xff08;Xilinx virtual cable&#xff09;&#xff0c;突然看到有人搞wifi-JTAG&#xff08;感兴趣可以参考https://github.com/kholia/xvc-esp8266&#xff09;&#xff0c;也挺有趣的。就突然想了解一下JTAG是如何运作的&#xff0c;例如器件识别&…

python怎么输出倒序

python怎么输出倒序&#xff1f;下面给大家介绍四种方法&#xff1a; 创建测试列表 >>> lst [1,2,3,4,5,6]方法1&#xff1a; >>> lst.reverse() #reverse()反转 >>> lst [6, 5, 4, 3, 2, 1] 方法2&#xff1a; >>> lst1 [i for i in …

网贷大数据黑名单要多久才能变正常?

网贷大数据黑名单是指个人在网贷平台申请贷款时&#xff0c;因为信用记录较差而被列入黑名单&#xff0c;无法获得贷款或者贷款额度受到限制的情况。网贷大数据黑名单的具体时间因个人信用状况、所属平台政策以及银行审核标准不同而异&#xff0c;一般来说&#xff0c;需要一定…