【数据库原理】(4)数据模型介绍

在数据库中,数据不仅包含数据本身的内容,还包括数据之间的关系。这是因为计算机无法直接处理现实世界中的具体事物,因此必须将这些事物抽象成数据模型,以便计算机处理。

数据处理的三个领域

数据从现实世界到数据库里的具体表示要经历三个领域,即现实世界、信息世界、计算机世界。这三个领域的关系如图所示。
在这里插入图片描述

1.现实世界

  • 定义:现实世界指的是客观存在的事物及其相互联系。
  • 数据转化:在这个阶段,现实世界中的数据如报表、图表等被抽象和分类,以建立数据库所需的数据模型。

2.信息世界

  • 定义:信息世界是对现实世界事物的抽象描述,主要存在于人们的思维中。

  • 关键概念

    • 实体(Entity):现实世界中可以区分的具体或抽象事物,如一本书、一个学生。
    • 属性(Attribute):实体的特征,例如一个学生的姓名、性别。
    • 码(Key):唯一标识实体的属性,例如图书编号。
    • 域(Domain):属性的取值范围,比如性别的域是男或女。
    • 实体集(Entity Set):具有相同属性的实体集合。
    • 实体型(Entity Type):对实体集的抽象描述。
    • 联系(Relationship):实体之间的相互关系。
  • 实体-联系模型(E-R Model)

    • 通过实体-联系图(E-R图)来表示数据结构。
    • 使用矩形表示实体型,椭圆形表示属性,菱形表示联系。

1.两个实体之间的联系

一对一联系(1:1)

如果对于实体集 A 中的每一个实体,实体集 B 中至多有一个实体与之联系,反之亦然则称实体集 A 与实体集 B 具有一对一联系,记为 1:1。

例如,公司里面,一个部门只有一个经理,而一个经理只在一个部门中任职,则部门集与经理集之间的联系为 1:1。

一对多联系(1:n)

如果对于实体集 A 中的每一个实体,实体集 B 中有(m>0)个实体与之联系;对于实体集 B 中的每一个实体,实体集 A 中至多有一个实体与之联系,则称实体集 A 与实体集 B具有一对多联系,记为 1:n。

例如,一个部门有多个职工,而一个职工只在一个部门工作,则部门集与职工集之间的联系为 1:n。

多对多联系(m:n)

如果对于实体集 A 中的每一个实体,实体集 B 中有n(m>0)个实体与之联系; 对于实体集 B 中的每一个实体,实体集 A 中有m(m>0)个实体与之联系,则称实体集 A 与实体集B 具有多对多联系,记为 m:n。

例如,一个产品可以由多个零件组成,而一个零件又可以用于多种产品,则产品集与零件集之间的联系为 m:n。

对信息世界建模,必须方便、准确地表示出上述信息世界中的常用概念,最常用的工具是实体-联系图(E-R 图)。E-R 图提供以下描述实体型、属性和联系的方法。
在这里插入图片描述

实体型: 用矩形表示,矩形框内写明实体名。

属性:用椭圆形表示,并用无向边将其与相应的实体连接起来

联系: 用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。注意:联系本身也是一种实体型,也可以有属性,联系的属性也要用无向边与该联系连接起来。

两个实体间的三种联系,可以用下图表示。
在这里插入图片描述

当实体及联系较多时,可以将 E-R 图分成两部分:实体及属性图和实体及联系图。
在这里插入图片描述

在这里插入图片描述

2.一个实体内的联系

一个实体内的联系也包括1:1、1:n、m:n 三种。例如,学生实体型内部具有领导和被领导的联系,即班长领导班里的学生,而每个学生只被一个班长领导,如图所示。

在这里插入图片描述

3.多个实体间的联系

多个实体间的联系也包括 1:1、1:n、m:n三种。例如,教师课程和学生三个实体集之间存在以下关系:

每个教师可以讲授多门课程给不同的学生,每门课程可能会有多个教师讲授,每个学生可以上多门课程,每门课程都有很多学生选修,所以他们之间是多对多的联系。

又如,每个保管员工作在一个仓库中,保管着多种商品,每种商品只能存放在一个仓库中,每个仓库由多名保管员看管。

以上两个例子中多个实体间的联系如图所示。
在这里插入图片描述

3.计算机世界(数据世界或机器世界)

  • 定义:计算机世界是在信息世界的基础上进一步抽象的阶段,由数据库管理系统(DBMS)支持的数据模型表示。
  • 作用:此阶段将信息世界中的数据模型转换成计算机可以理解和处理的形式。

数据模型的要素

数据模型是数据库设计的核心,它用于描述客观事物及其相互关系的数据。有效的数据模型应该能够全面描述系统的静态特性、动态特性和约束条件。以下是数据模型的三个主要要素:

  1. 数据结构(描述系统的静态特性)

    • 作用:描述数据库中的对象类型和这些对象的集合。
    • 内容:涵盖与数据类型、内容、性质相关的对象,以及数据之间的联系。
    • 重要性:数据结构是定义数据模型特性的关键部分,通常根据数据结构的类型来命名数据模型,例如关系模型、层次模型等。
  2. 数据操作(描述系统的动态特性)

    • 定义:指对数据库对象实例允许执行的操作集合。
    • 操作类型:主要包括数据检索和更新操作(如插入、删除、修改)。
    • 明确性:数据模型必须明确定义操作的含义、操作符号、操作规则(例如优先级)以及执行这些操作的语言。
  3. 数据的约束条件(保证数据的正确性、有效性和一致性)

    • 作用:定义数据库状态和状态变化的限制,以确保数据的准确性和一致性。
    • 内容:包括一组完整性规则,这些规则制约数据及其联系的存储和变化。
    • 灵活性:数据模型应包含基本的通用完整性约束条件,并提供定义特定应用完整性约束的机制。

总的来说,一个有效的数据模型应该能够准确地描述数据的结构、如何操作这些数据,以及如何通过约束条件来维持数据的完整性和一致性。这些要素共同确保了数据库系统能够有效地表示和管理现实世界的复杂数据。

数据模型的分类

按照数据模型描述角度的不同,数据模型可以分为以下几类

1. 概念模型(信息模型)

  • 定义:也称为信息模型,是根据用户的视角对数据和信息进行的建模。
  • 目的:作为现实世界到信息世界的第一层抽象,强调语义表达,易于用户理解。
  • 应用:主要用于数据库设计阶段,促进用户和数据库设计人员之间的交流。
  • 工具:实体-联系模型(E-R 模型)是其中最著名的工具,用于描述实体间的关系。

2. 数据库支持的数据模型

  • 目的:基于计算机系统视角对数据进行建模。
  • 类型:包括层次模型、网状模型、关系模型,以及逐渐受关注的面向对象模型。
  • 特点:这些模型具有不同的数据结构形式,用于实现数据库管理系统(DBMS)。

层次模型和网状模型统称为非关系模型。在非关系模型中,实体用记录表示,实体之间的联系转换成记录之间的两两联系。非关系模型数据结构的基本单位是基本层次联系。所谓基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系,如图 所示。
在这里插入图片描述

图中, R i R_i Ri位于联系 L i j L_{ij} Lij的始点,称为双亲结点; R j R_j Rj位于联系 L i j L_{ij} Lij的终点,称为子女结点。这三种模型的根本区别在于数据之间联系的方式(即记录型之间的联系方式)不同。关系模型是用“二维表”来表示数据之间的关系;层次模型是用“树结构”来表示数据之间的关系; 网状模型是用“图结构”来表示数据之间的关系。由于它们的数据表示方式不同,当用户使用数据库时,关系模型只用了数据记录的内容,使得用户在关系 DBMS 中操作时,不必去了解数据记录的联系及顺序,自然就觉得使用起来简单方便;而层次模型和网状模型要用记录与记录之间的联系,以及它们在存储结构中的具体安排,这就要求用户有较多的计算机知识,对一般用户来说,使用起来就不太简单方便了。下面对这三种模型做一个简单的介绍。

1.层次模型

  • 结构:使用树状结构表示数据与数据之间的联系。每个节点代表一个实体型,节点间的有向边表示记录间的联系。
  • 特征:具有一个根节点(无父节点),其他节点恰有一个父节点。
  • 存取路径:要访问某记录,需从根节点开始沿有向树逐层向下查找。
  • 限制:不能直接表示多对多联系,解决方法包括冗余结点法和虚拟结点分解法。

在层次模型中,每个结点表示一个实体型,称为记录型。一个记录型可有许多记录值,简称为记录。结点之间的有向边表示记录之间的联系。如果要存取某一记录型的记录,可以从根结点开始,按照有向树层次逐层向下查找,查找路径就是存取路径。
下面给出了某学校的系、教研室、教师、班级的层次模型及实例。

下图中的“系”是根结点,该树状结构反映的是实体型之间的结构。该模型实际存储的数据通过链接指针体现它们之间的这种联系。

在这里插入图片描述

下图的实例给出了学校里一个系的数据,其他系的情况用虚线框表示,并予以省略。
在这里插入图片描述

层次模型不能直接表示多对多的联系。若要表示多对多的联系,可采用如下两种方法:

方法 1: 冗余结点法。将两个实体的多对多的联系转换为两个一对多的联系。

方法 2: 虚拟结点分解法。将冗余结点转换为虚拟结点。虚拟结点是一个指引元,指向所代替的结点。该方法的优点是减少对储存空间的浪费,避免数据的不一致性; 该方法的缺点是改变储存位置有可能引起虚拟结点中指针的修改。

层次模型的特点是记录之间的联系通过指针实现,比较简单,查询效率高。

层次模型的缺点是只能表示 1: n 的联系,尽管有许多辅助手段可以实现 m:n 的联系,但较复杂,不易掌握,由于层次顺序严格、复杂,插入删除操作的限制比较多,导致应用程序编制起来比较复杂。

2.网状模型

  • 结构:使用网状结构表示实体及其联系。每个结点代表一个记录类型,联系通过链接指针实现。
  • 特征:可以有多个无父结点的结点,允许复合链,即两个结点之间可以有多种联系。
  • 优点:直接描述现实世界,性能良好,存取效率高。
  • 缺点:结构复杂,难以掌握,编程难度高。

广义地讲,任何一个连通的基本层次联系的集合都是网状模型图。
在这里插入图片描述

上图给出了一个简单的网状模型。由于每一个基本层次联系都代表一对多的联系,因此,若将图形倒置也不可能变成层次模型。图(a)中的每一个结点为一个记录类型,图 (b)是图 (a)的一个具体示例。其中用单向环形链接指针实现联系。可以看出如果零件和配件数量较多,链接将非常复杂。

网状模型中的每个结点表示一个记录类型(实体),每个记录类型可以包含若干个字段(实体的属性),结点间的连线表示记录类型之间一对多的联系,层次模型和网状模型的主要区别如下:

(1) 网状模型中,子女结点与双亲结点的联系不唯一,因此需要为每个联系命名;

(2) 网状模型允许复合链,即两个结点之间有两种以上的联系;

(3) 网状模型不能表示记录之间的多对多联系,需要引进连接记录来表示多对多的联系。

通常,网状数据模型没有层次模型那样严格的完整性约束条件,但 DBTG 在模型 DDL中提供了定义 DBTG 数据库完整性的若干概念和语句:

(1)支持记录码的概念,码能唯一标识记录的数据项集合;

(2) 保证一个联系中双亲记录和子女记录之间是一对多的联系;

(3) 支持双亲记录和子女记录之间的某些约束条件。

网状模型的主要优点是能更为直接地描述现实世界,具有良好的性能,存取效率高。

网状模型的主要缺点是结构复杂。例如,当应用环境不断扩大时,数据库结构就变得很复杂,不利于最终用户掌握,编制应用程序的难度比较大,DBTG 模型的 DDL、DML 语言复杂,记录之间的联系是通过存取路径来实现的,因此程序员必须了解系统结构的细节,增大了编写应用程序的难度。

3.关系模型

  • 结构:使用“二维表”结构表示实体及其联系。
  • 特征:每个二维表称为一个关系,关系模型实际是关系框架的集合。描述的一致性强,可用于直接表示多对多联系,关系必须规范化。
  • 理论基础:建立在数学概念基础上,具有强大的理论支持。

下图给出了一个简单的关系模型,其中图 (a)给出了关系模式:
在这里插入图片描述

部门(部门编号,名称,经理,人数)

员工(员工编号,姓名,性别,部门编号)

图(b)给出了这两个关系模式的关系,关系名分别为部门关系和员工关系,均包含两个元组,部门关系的关键字为部门编号,员工关系的关键字为员工编号。

在关系模型中基本数据结构就是二维表,不用像层次模型或网状模型那样的链接指针。记录之间的联系是通过不同关系中的同名属性来体现的。例如,要查找员工“张三”所属的部门,首先要在员工关系中根据姓名找到所属部门 01,然后在部门关系中找到 01 部门编号对应的名称即可。在上述查询过程中,同名属性的“部门编号”起到了联系两个关系的纽带作用。由此可见,关系模型中的各个关系模式不应当孤立起来看待。

4.面向对象数据模型

  • 目的:结合面向对象编程方法与数据库技术,支持非传统应用领域的新需求。
  • 结构:基本结构是对象,而非记录。每个对象包含数据描述和操作方法。
  • 特点:更接近人类思维方式描述客观世界,可扩充性强,具有丰富的语义。
  • 比较:与关系模型相比,面向对象模型的类包含数据和方法,而关系模型中只有实体属性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++学习】:命名空间、输入输出和缺省参数全面解析

🎥 屿小夏 : 个人主页 🔥个人专栏 : C入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. 命名空间1.1 为什么需要命名空间?1.2 命名空间的定义1.3 命名空间特性1…

3个值得推荐的WPF UI组件库

WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创建出吸引人且交互性强的应用程序。 HandyControl HandyControl是一套WPF控件库&…

图像分割实战-系列教程9:U2NET显著性检测实战1

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 1、任务概述

如何本地快速部署Apache服务器并使用内网穿透工具实现公网访问内网服务

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

深度学习|2.4 梯度下降

如上图, J ( w , b ) J(w,b) J(w,b)是由w和b两个参数共同控制的损失函数,损失是不好的东西,所以应该求取合适的w和b使得损失最小化。 为了简单考虑,可以先忽略参数b。 斜率可以理解成在朝着x正方向移动单位距离所形成的损失值的变…

【Linux驱动】设备树模型的LED驱动 | 查询方式的按键驱动

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🍮设备树模型的LED驱动🍩设备树文件🍩驱动程序 &#x1…

【数据结构】树的遍历

树的遍历 前序遍历 前序遍历是按照根节点->左子树->右子树的顺序进行遍历 图片来源维基百科深度优先遍历(前序遍历): F, B, A, D, C, E, G, I, H. 代码实现 递归 # class TreeNode: # def __init__(self, x): # self.val x # …

[笔记] GICv3/v4 ITS 与 LPI

0. 写在前面 由于移植一个 pcie 设备驱动时,需要处理该 pcie 设备的 msi 中断(message signaled interrup)。 在 ARM 中, ARM 建议 msi 中断实现方式为: pcie 设备往 cpu 的一段特殊内存(寄存器)写某一个值&#xff0…

浅析xxl-obj分布式任务调度平台RCE漏洞

文章目录 前言本地环境搭建1、初始化数据库2、搭建调度中心3、搭建出执行器 XXL-JOB漏洞1、后台弱口令->RCE2、未授权API->RCE3、默认accessToken4、CVE-2022-361575、SSRF漏洞->RCE 总结 前言 在日常开发中,经常会用定时任务执行某些不紧急又非常重要的事…

c# 捕获全部线程的异常 试验

1.概要 捕获全部线程的异常 试验,最终结果task的异常没有找到捕获方法 2.代码 2.1.试验1 2.1.1 试验结果 2.2 代码 2.2.1主程序代码 using NLog; using System; using System.Threading; using System.Windows.Forms;namespace 异常监控 {static class Program…

【C#】知识点实践序列之Lock简单解决并发引起数据重复问题

欢迎来到《小5讲堂之知识点实践序列》文章,大家好,我是全栈小5。 这是2023年第3篇文章,此篇文章是C#知识点实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正! 本篇在Lock锁定代码块基…

主浏览器优化之路2——Edge浏览器的卸载与旧版本的重新安装

Edge浏览器的卸载与旧版本的重新安装 引言开整寻找最年轻的她开始卸载原本的Edge工具下载后新版本的安装 结尾 引言 (这个前奏有点长,但是其中有一些我的思考顿悟与标题的由来,望耐心) 我在思考这个系列的时候 最让我陷入困得是…

python 深度学习 记录遇到的报错问题10

本篇继python 深度学习 解决遇到的报错问题9_module d2l.torch has no attribute train_ch3-CSDN博客 一、CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stackt…

架构设计的核心:从多个维度理论分析

文章目录 一、如何实现高内聚低耦合的架构1、确定边界2、内聚的分类3、耦合的分类4、如何实现高内聚低耦合(1)耦合关注点(2)低耦合原则(3)高内聚原则 二、如何实现可扩展性的架构1、扩展性:核心…

机器人活动区域 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有一个机器人,可放置于 M x N 的网格中任意位置,每个网格包含一个非负整数编号,当相邻网格的数字编号差值的绝对值小于等于 1 时机器人可以在网格间移动。 问题: 求机器人可活动的最大范围对应的网格点数目。 说明: 网格…

G-LAB|2024年1月份最新的开班计划

1🈷最新的开班计划 👇👇👇 思科华为HCIA、HCIP、红帽RHCE 可预约免费试听

C#/.NET/.NET Core推荐学习书籍(23年12月更新)

前言 古人云:“书中自有黄金屋,书中自有颜如玉”,说明了书籍的重要性。作为程序员,我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍,值得.NET开发者们学习和专研。书籍已分类…

微服务智慧工地信息化解决方案(IOT云平台源码)

智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术,实现对施工现场的实时监测、数据分析和智能决策,以提高工地的安全性、效率和质量。 智慧工地平台是一种智慧型、系…

Linux 详解:最完整的入门指南

Linux 是当今最流行的操作系统,仅次于 Windows 和 MacOS。这个开源系统是免费的,在可靠性、安全性和灵活性方面有着悠久的历史。 由于Linux存在于许多设备中并带来了许多优势,因此了解它是什么以及它如何影响计算机行业是至关重要的。 本文…

一呼百应API实时获取商品详情的实现

一、引言 随着电子商务的飞速发展,快速准确地获取商品详情变得尤为重要。一呼百应作为一家知名的B2B采购平台,提供了丰富的商品信息和交易数据。通过一呼百应的API接口,开发者可以实时获取商品详情,为业务决策和数据分析提供有力…
最新文章