当前位置: 首页 > news >正文

3种数据模型的演变

数据模型的发展也是不断演变的,常见的数据模型有层次模型(Hierarchical Model),网状模型(Network Model)和关系模型(Relational Model)。

层次模型

层次模型中,实体用记录表示,实体的属性对应记录的字段,两条记录之间是一对多的关系。层次模型是数据库系统中最早出现的数据模型,典型代表是 IBM 公司 1968 年推出的 IMS(Information Management System)。

层次模型的数据集合满足以下两个条件:

  • 有且只有一个结点没有双亲结点,称为根结点;
  • 根以外的其他结点有且只有一个双亲结点。

熟悉索引的同学应该能看出来,这种结构和索引的结构非常相似。从数据查询和操作的角度看,存在以下的优缺点。

层次模型的优点
  • 层次模型的数据结构比较简单清晰;
  • 层次数据库的查询效率高;
  • 层次数据模型提供了良好的完整性约束支持。
层次模型的缺点
  • 现实世界很多联系是非层次的,如多对多的联系;
  • 如果一个结点具有多个双亲结点,用层次模型表示就会很复杂;
  • 查询子女结点必须通过双亲结点。

网状模型

网状数据库系统采用网状模型作为数据组织方式,这是数据系统语言会议(Conference on Data System Language)下属的数据库任务组(Database Task Group)提出的一个系统方案,因此这个系统也称为 DBTG 系统或 CODASYL 系统。以 DBTG 思想为核心构建的网状数据库产品有,Cullinet Software 公司的 IDMS、Univac 公司的 DMS-1100 等。

网状模型的数据集合满足以下两个条件:

  • 允许一个以上的结点无双亲结点;
  • 一个结点可以有多于一个双亲结点。

网状模型的优点
  • 能够更直接的描述现实世界;
  • 具有良好的性能,存取效率较高。
网状模型的缺点
  • 结构比较复杂,特别是在大型数据库中网状关系的维护变得困难,不利于最终用户掌握;
  • 数据定义语言和数据操作比较复杂,进入的门槛比较高;
  • 由于记录类型之间的联系是通过存取路径来实现的,用户必须了解系统结构的细节,从而选择适当的存取路径来访问数据,加重了编写应用程序的负担。

关系模拟

关系模型是 1970 年 IBM 公司研究员 F.Codd 首次提出,开创了数据库关系方法和关系数据理论的研究,其本人页因此获得了 1981 年的图灵奖。我们今天看到的市面上流行的绝大部分数据库都支持关系模型,这类数据库也称为关系型数据库。

关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表。

关系模型要求关系必须满足一定的规范条件,其中最基本的一条是,关系的每个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。

关系模型的优点
  • 关系模型建立在严格的数学概念基础上;
  • 关系模型的概念单一;
  • 关系模型的存取路径对用户隐蔽。

存取路径隐蔽导致其查询效率不如层次和网状模型,现代关系型数据库通过索引等技术手段优化查询性能,由此又带来了管理难度的增加。

课程总结

上述三种数据模型的是依次演进的,每种模型解决了上一代模型存在的问题,同时自身也存在优化的空间,因此也在不断演进。关系模型以一种简单的方式描述现实世界,因此在推出后受到了广泛的关注,由此发展成为当下最重要的数据模型。

但对于当前非结构化的数据,关系模型仍然存在不小的局限,因此近些年又演进出面向对象数据模型、半结构化的 XML 数据模型、键值对数据模型、文档和图数据模型等等,由此也涌现了种类繁多的新型数据库,在各种不同的应用场景中发挥自己的作用。

http://www.dtcms.com/a/617618.html

相关文章:

  • Highcharts常见问题解析(5):可以在服务器上使用 Highcharts 吗?如何正确集成?
  • 用 Node.js 手动搭建 HTTP 服务器:从零开始的 Web 开发之旅!
  • 前端使用 React Query 管理“服务器状态”
  • 佛山cms建站帮人做兼职的网站
  • Spring Boot的web基础配置
  • 下载网站上的表格 怎么做天津市建设工程质量安全监督管理总队网站
  • 【Linux日新月异(八)】CentOS 7系统资源监控与排查深度指南:性能调优全景图
  • word中怎么查看插入的图片占用内存大小来压缩word文件整体大小
  • Flink CDC + MaxCompute用 MaxCompute Connector 打通实时入湖通道
  • 【AI 学习】AI Agent 开发进阶:架构、规划、记忆与工具编排
  • 二十三、Transformer架构详解
  • JAR逆向工程实战对比:传统工具 vs 自动化解决方案
  • 算法学习--离散化
  • 沈阳住房和城乡建设厅网站越南语网站怎么做
  • React + ECharts 实践:构建可交互的数据可视化组件
  • Devconnect 活动报名中!dAI 路线图、跨链 / 预言机创新新动态!Linera 实战+Web3 安全公开课上线!
  • 华为、阿里巴巴、字节跳动 100+ Linux面试问题总结(一)
  • [OpenHarmony6.0][Docker][环境]OHOS6 编译环境构建指南
  • 空包网站建设属于哪类网站排名优化推广厦门
  • async await 的前世今生
  • 外卖项目day02
  • 多电压输出场景下ASP3605负载调整率的一致性验证
  • 使用rust复刻linux经典命令:wc(文本统计工具)
  • 网站设计公司哪里好镇江网站建设找思创网络
  • 45_FastMCP 2.x 中文文档之FastMCP集成:Azure (Entra ID) 指南
  • 【微服务中间件】RabbitMQ 全方位解析:同步异步对比、SpringAMQT基础入门、实战、交换机类型及消息处理详解
  • 单点高ROI场景医疗AI编程分析与实践
  • 使用python进行PostgreSQL 数据库连接
  • 天线类型和指标介绍
  • Netty编写Echo服务器