数据库设计革命:逻辑模型的演变与面向对象的突破

 
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:数据库

欢迎访问我的主页:Srlua 获取更多信息和资源。✨✨🌙🌙

目录

数据模型

数据模型三种类型

数据模型的基本要素

1.数据结构

2.数据操作

3.数据的完整性约束条件

三个要素的作用

四种主要的逻辑模型

​1.层次模型

【例子】

层次模型的特点:

层次模型缺点:

处理效率低

不易进行更新操作

安全性不好

数据独立性较差

2.网状模型

【例子】

优点

缺点

3.关系模型

关系模型的术语:

术语对比

实体及实体间的联系的表示方法

关系模型的特点:

关系模型的缺点

4.面向对象模型


数据模型

数据模型三种类型

概念模型又称信息模型,是从用户观方面来对数据和信息进行建模的结果,是对现实世界的事物及其联系的第一级抽象,它不依赖于具体的计算机系统,不是 DBMS 支持的模型,主要用于描述用户所关心的信息结构,属于信息世界中的模型,用于数据库的设计。

逻辑模型是对客观事物及其联系的数据描述,包括网状模型、层次模型、关系模型和面向对象模型等,它是从计算机系统观方面来进行建模,主要用于 DBMS 的实现,属于计算机世界的模型。

物理模型是对数据最底层的抽象,用于描述数据在计算机系统内部的表示方式和存取方法,其实现由 DBMS 完成。

数据模型两大主要功能是用于描述数据及其关联。它包含三个基本要素,即数据结构、数据操作和数据的约束条件。

数据模型的基本要素

1.数据结构

定义:用于描述数据的静态特性,它是所研究对象类型的集合。

分类:

数据描述对象

定义:用于描述数据的性质、内容和类型等相关的对象指出对象所包含的项,并对项进行命名,指出项的数据类型和取值范围等。

数据关系描述对象

定义:是用于描述数据间关系信息的对象指明各种不同对象类型之间的关系及关系的性质,并对这些关系进行命名。

2.数据操作

定义:用于对数据动态特性的描述,它是对数据库中各种对象类型的实例允许执行的所有操作及相关操作规则的集合。

分类:

        查询

        更新

更新操作又包括插入、删除和修改。在数据模型中,要明确定义操作的各项属性,如操作符、操作规则以及实现操作的语言等。

3.数据的完整性约束条件

数据的约束条件是一组完整性规则的集合。完整性规则是指既定的数据模型中数据及其关系所具有的制约性规则和依存性规则。这些规则是通过限定符合数据模型的数据库状态及其变化的方法来保证数据的正确性、有效性和相容性。

三个要素的作用
  • 数据结构是基础,它确定着数据模型的性质。
  • 数据操作是关键,它确定着数据模型的动态特性。
  • 约束条件主要起辅助作用。

四种主要的逻辑模型

1.层次模型

它的数据结构是根树

特点:

  • 有且仅有一个节点没有父节点,这个节点就是根树的根节点。
  • 除了根节点外,其他节点有且仅有一个父节点,但可能由0个或者多个子节点。

在层次模型中,具有相同父节点的子节点称为兄弟节点,没有子节点的节点称为叶节点。

在根树的层次结构中,每个节点代表一个实体型。但由于层次模型中的实体型是用记录型来表示,所以根树中的每个节点实际上是代表着一个记录型。由于每个记录型节点有且仅有一个父节点(根节点除外),所以只要每个节点指出它的父节点,就可以表示出层次模型的数据结构。如果要访问某一个记录型节点,则可以运用相关的根树遍历方法从根节点开始查找该节点,然后对其访问。

【例子】

        一个学校包含多个学院,一个学院又包含多个系和研究所等。这样,学校、学院、系和研究所等实体非常自然地构成了现实世界中的层次关系。层次模型正是为了满足描述这种层次关系的需要而产生的。所以,它的表达方式自然、直观,但是其缺点也是明显。

层次模型的特点:
  • 结点的双亲是唯一的
  • 只能直接处理一对多的实体联系
  • 每个记录类型可以定义一个排序字段,也称为码字段
  • 任何记录值只有按其路径查看时,才能显出它的全部意义
  • 没有一个子女记录值能够脱离双亲记录值而独立存在
层次模型缺点:
处理效率低

这是因为层次模型的数据结构是一种根树结构,对任何节点的访问都必须从根节点开始。这使得对底层节点的访问效率变低,并且难以进行反向查询。

不易进行更新操作

更新操作包括插入、修改和删除等操作。对某一个树节点进行这种更新操作时,都有可能导致整棵根树大面积的变动。对大数据集来说这可是一个沉重的负担。

安全性不好

这主要体现在,当删除一个节点时,则它的子节点和孙子节点都将被删除。所以,必须慎用删除操作。

数据独立性较差

当用层次命令操作数据的时候,它要求用户了解数据的物理结构,并需要显式地说明存取途径。

2.网状模型

网状模型的数据结构是网状结构。网状模型反映着现实世界中实体间更为复杂的联系。由以下特点可以看出节点间没有明确的从属关系,一个节点可以与其它多个节点有联系。

特点:

允许存在一个以上的节点没有父节点。

点可以有多余一个的父节点。

缺点:

由于在使用网状模型时,用户必须熟悉数据的逻辑结构所以结构的复杂性增加了用户查询和定位的难度。

不支持对于层次结构的表达等。

与层次模型类似,网状结构中的每个节点代表一个实体型,而这种实体型是用记录型来表示。与层次结构不同的是:在层次结构中有且仅有一个根节点,而在网状结构中则允许同时存在多个“根节点”;在层次结构中每个节点有且仅有一个父节点(根节点除外),而在网状结构中则允许一个节点同时有多个“父节点”。

这种结构上的差异,也导致了节点对应的记录型结构的变化。网状模型中节点间联系的实现必须由节点同时指出其父节点和子节点的方法来完成。而在层次模型中,每个节点只需指定其父节点即可(根节点除外)。也正是由于这种差异的存在,使得网状模型在性质和功能上发生了重要的改变。这主要体现在:网状模型比层次模型具有更大的灵活性和更强的数据建模能力。

【例子】

图中,表示了学生A、B和课程C、D、E之间的一种选修联系的网状结构图

课程选修网状结构

对于小数据量而言,层次模型和网状模型的缺点可能不太明显但是作用于大数据量时,其缺点就显得非常突出。所以,这两种模型不适合用于当今以处理海量数据为特征的数据处理任务中。目前,它们基本上退出了市场,取而代之的是关系模型。

优点

能够更为直接地描述现实世界,如一个结点可以有多个双亲

具有良好的性能,存取效率较高

缺点

结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握

DDL、DML语言复杂,用户不容易使用

3.关系模型

关系模型是当今最为流行的一种数据模型。在关系模型中,实体间的联系是过二维关系(简称关系)来定义,其数据结构就是二维关系每个一种二维关系都可以用一张二维表来表示,表达直观、明了。所以,很多时候是把二维表和关系直接等同起来简称为(二维)关系表。关系模型就是若干张关系表的集合。

在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。

关系模型的术语:
  • 关系:一张二维表。
  • 记录(或元组):关系表中的一行。
  • 字段(或属性):关系表中的一列。
  • 域:即字段的值域,也就是字段的取值范围,
  • 数据项(或分量):某一个记录中的一个字段值。
  • 主关键字段(或主码):简称主键,是关系表中一个或者多个字段的集合,这些记录的值能够唯一标识每一个记录。
  • 关系模式:是对关系的一种抽象的描述,其描述格式为“关系名(字段1,字段2,....字段n)”,其中“字段1”带不划线,表示该字段是主关键字段。
术语对比

实体及实体间的联系的表示方法

实体型:直接用关系(表)表示。

属性:用属性名表示。

一对一联系:隐含在实体对应的关系中。

一对多联系:隐含在实体对应的关系中。

多对多联系,直接用关系表示。

 

关系模型的特点:
  1. 具有严密的数学基础。关系代数、关系演算等都可以用于对关系模型进行定性或者定量的分析,探讨关系的分开和合并及其有关性质等。
  2. 概念单一化、表达直观,但又具有较强的数据表达和建模能力。一般来说个关系只表达一个主题,如果有多个主题在一起,则需要将它们分开用多个关系来表示,这就是概念的单一化。
  3. 关系都已经规范化。即关系要满足一定的规范条件,这使得关系模型表现出特有的一些性质。例如,在一个关系中数据项是最基本的数据单位,它不能再进行分解:同一个字段的字段值具有相同的数据类型;各字段的顺序是任意,记录的顺序也是任意的,等等。
  4. 在关系模型中,对数据的操作是集合操作,即操作的对象是记录的集合操作所产生的结果也是记录的集合。这种操作不具有明显的方向性,不管如何操作,其难度都一样。而在层次模型和网状模型中,对数据的操作带有明显的方向性,在正反两个方向上操作的难度完全不一样。
关系模型的缺点

对复杂问题的建模能力差在对复杂问题建模时一般都会呈现出错综复杂的关系,而关系模型仅限于用二维关系来表示这些复杂关系,无法用递归和嵌套的方式来描述(因为它不允许嵌套记录和嵌套关系的存在)。所以在许多时候关系模型显得力不从心。

对象语义的表达能力比较差。现实世界中,对象之间的关系往往不仅限于量的关系,而且还可能体现语义之间的联系,蕴涵着特定的内涵。但关系模型为了规范化这些关系,可能会强行拆开这种语义联系,造成不自然的分解,从而使得在查询等操作时出现语义不合理的结果。

可扩充性差。关系模式只支持记录的集合这一种数据结构,并且数据项不可再分,无法形成嵌套记录和嵌套关系,所以它无法扩充成层次模型或网状模型。且它不支持抽象数据类型,不能对多种类型数据对象进行管理。

4.面向对象模型

面向对象方法(Object-Oriented Paradigm,简称OO)基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题。面向对象模型作为数据库设计的重要部分,其主要目标是更好地理解和模拟现实世界中的实体和实体间的联系。近年来,面向对象模型已经取得了一系列的进展。

面向对象模型是由面向对象方法进行建模和表示而形成的数据模型。

一方面,面向对象模型不断精细化,更加贴近现实世界的特性。例如,关系模型中的属性可以细化为不同的类型,如字符型、整型、浮点型等,而面向对象模型则可以进一步描述这些属性的取值范围、单位等信息,使得模型更加精确。

另一方面,面向对象模型也在不断融合和拓展。例如,面向对象模型与规则引擎、机器学习等技术相结合,可以更好地处理复杂的数据分析与挖掘任务。同时,面向对象模型也在向分布式、云计算等新兴领域拓展,以适应不断变化的业务需求和技术环境。

面向对象模型的优化也在持续进行。例如,通过引入缓存机制、延迟加载等技术,可以提高系统的响应速度。同时,开发者也在探索如何更好地利用新型数据存储技术,如NoSQL数据库,以进一步提高系统的性能和扩展性。
总的来说,面向对象模型作为数据库设计中的重要一环,其进展体现在精细化、融合拓展和优化等方面,不断为我们理解和应用数据库提供了新的思路和方法。

目前面向对象模型的相关理论和方法还不够成熟,主要是处于理论研究和实验阶段。

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

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

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

相关文章

demo破坏升级

如果我们刚才所解释的dom破坏形式不再是单纯的x一层结构,而是x,y这种形式,两层结构,我们该怎么办 举个例子吧 我们的想法是先取x再取y,想法很简单,现实很苦感,看看结果吧 取出来的是undefined…

怎么采集GBK或GB2312等特殊字符编码的网站数据

如果要采集的网站是GBK或GB2312等特殊字符编码,采集结果可能是一堆看不懂的文字或乱码,无法使用。 通常网页文章采集工具有字符编码选项,默认是UTF-8(现在大部分网站都是),改选为GBK或GB2312字符编码即可&…

[项目设计] 从零实现的高并发内存池(三)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 4.CentralCache实现 4.1 CentralCache整体架构 4.2 围绕Span的相关设计…

【深圳五兴科技】Java后端面经

本文目录 写在前面试题总览1、java集合2、创建线程的方式3、对spring的理解4、Spring Boot 和传统 Spring 框架的一些区别5、springboot如何解决循环依赖6、对mybatis的理解7、缓存三兄弟8、接口响应慢的处理思路9、http的状态码 写在前面 关于这个专栏: 本专栏记录…

【轮式平衡机器人】——TMS320F28069片内外设之Timer_IT(补:CCS程序烧录方法)

引入 Timer_IT 指的是 TMS320F28069 的定时器中断功能。在微控制器或数字信号控制器中,定时器是一个非常重要的外设,它可以用来产生固定时间间隔的中断,或者用来精确计算时间。 Timer_IT 的主要特点如下: 定时功能:…

React报错 之 Objects are not valid as a React child

原文链接: 1、React报错之Objects are not valid as a React child 2、Objects are not valid as a React child error [Solved] 作者:Borislav Hadzhiev 以下文中涉及到的链接均来自于该作者,他写了很多相关的文章,可以多看看他的…

综合素质保分卷一

10.根据《中华人民共和国预防未成年人犯罪法》的规定,强子多次实施了严重危害社会的行为后,经 由专门教育指导委员会评估同意,( D)会同公安机关可以决定将其送入专门学校接受专门教育。 A.父母或监护人 B.教师…

深度学习GPU环境安装(WINDOWS安装NVIDIA)

1.检测是否支持GPU环境 1.1.打开设备管理器 winows下面搜索设备管理器(或者从桌面"此电脑"——>右键点击——>"管理"打开) 1.2.查看本地显卡 在"设备管理器"——"显示适配器"中,如果没有&…

【Python】-----基础知识

注释 定义:让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息,在Python中单引号与双引号没有区别,但必须是成对出现 输出与输入 程序是有开始,有结束的,程序运行规则:从上而下,由内…

低代码平台开发——基于React(文末送书)

目录 小程一言适用对象本书达成 书籍介绍作者简介内容介绍书籍目录阅读指导 小程送书 小程一言 《低代码平台开发——基于React》这本书主要围绕低代码平台和React技术的结合展开,为读者提供了关于低代码平台开发的理论和实践知识。 ## 书中内容简介 书中内容分为…

go-zero入门

本文简单介绍了go-zero,以及go-zero相关的安装配置。通过go-zero的hello world级别的一个的单体应用和一个包含两个服务的微服务应用,以实践的方式展示了go-zero项目的入门级搭建。 文章目录 1. 简介2. 快速开发单体应用3. 微服务应用搭建3.1 用户服务 u…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读书籍【送书活动】

目录 前言一、内容简介二、作者简介三、专家推荐四、读者对象五、目录福利总结 前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景,在多项专业和学术基准测试中表现出的智力水平,不仅接近甚至有时超越了人类的平均水平…

【Docker】Windows11操作系统下安装、使用Docker保姆级教程

【Docker】Windows11操作系统下安装、使用Docker保姆级教程 大家好 我是寸铁👊 总结了一篇【Docker】Windows11操作系统下安装、使用Docker保姆级教程的文章✨ 喜欢的小伙伴可以点点关注 💝 前言 什么是 Docker? Docker 是一个开源平台&…

linux实现远程文件夹共享-samba

目录 问题描述Samba如何挂载常用参数临时挂载实例一种长期挂载方法(已失败,仅供参考)查看挂载取消挂载umount失败 问题描述 我的代码需要访问存在于两个系统(win和linux)的文件夹,我不是文件夹的创建者&am…

STM32基础--什么是寄存器

STM32 长啥样 我使用的芯片是 144pin 的 STM32F103ZET6,具体见图 STM32F103ZET6 实物图。这个就是我们接下来要学习的 STM32,它将带领我们进入嵌入式的殿堂。芯片正面是丝印,ARM 应该是表示该芯片使用的是 ARM 的内核,STM32F103Z…

three.js如何实现简易3D机房?(一)基础准备-上

目录 一、tips 二、功能说明 1.模型初始化 2.功能交互 三、初始化准备 1.目录结构 2.创建三要素 3.创建轨道控制器 4.初始化灯光 5.适配 6.循环渲染 一、tips 1.three.js入门的相关基础性知识就不在此过多赘述了,可以自行提前了解 three.js docs&…

Pytest框架中的测试用例执行方式!

前言 本文将针对pytest的核心特性之一——测试用例的执行方式展开深入探讨,并通过详尽的实战示例展示如何在不同环境下灵活操控测试运行,同时全面解析pytest中常见的且极具实用价值的命令行选项。 一、从基础到进阶:pytest在命令行下的测试用…

苹果电脑专业的Mac垃圾清理工具CleanMyMac X4.14.7

CleanMyMac X是一款专业的Mac清理工具,它具有强大的功能和易用的界面,可以帮助用户快速清理Mac上的无用文件和垃圾,优化系统性能,提升电脑运行速度。 该软件的核心功能包括智能扫描与清理、应用程序管理、隐私保护和系统维护等。…

简单介绍SpeechPrompt、SpeechPrompt V2、SpeechGen

主要介绍SpeechPrompt、SpeechPrompt V2、SpeechGen SpeechPrompt 模型结构和原理(语音到符号) 整体思路:音频特征提取(HuBert/CPC),离散–》deep prompt speechLM(GSLM)—》概率映射–>目标Verbaliz…

代码随想录刷题笔记-Day28

1. 重新安排行程 332. 重新安排行程https://leetcode.cn/problems/reconstruct-itinerary/给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯…