层次模型

article/2025/11/5 18:34:47

层次模型

层次模型是数据库系统中最早出现的数据模型,层次模型系统采用层次模型作为数据的组织形式。层次数据库系统的典型代表IMS是IBM公司1968年推出的第一个大型商用数据库管理系统。层次模型用树形结构来表示各类实体以及实体间的联系。

层次模型的数据结构

在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型。

  1. 有且只有一个节点没有双亲结点,这个节点称为根节点;
  2. 根以外的其他节点有且只有一个双亲节点。

在层次模型中,**每一个节点表示一个记录类型,记录类型之间的联系用节点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。**这就使得层次数据库系统只能处理一对多的实体联系。
每个记录类型可包含若干个字段,这里记录类型描述的是实体,字段描述实体的属性。各个记录类型及其字段都必须命名。各个记录类型、同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段,也称为码字段,如果定义该排序字段的值是唯一的,则它就能唯一地标识一个记录值。一个层次模型在理论上可以包含任意有限个记录类型和字段,但任何实际的系统都会因为存储容量或者实现复杂度而限制层次模型中包含的记录类型数和字段的个数。在这里插入图片描述
从上图可以看出层次模型像一颗倒立的树,结点的双亲是唯一的。层次模型的一个基本的特点是,任何一个给定的记录值只能按其层次路径查看,没有一个子女记录值能够脱离双亲记录值而独立存在。

层次模型的数据操纵与完整性约束

层次模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。在进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女节点值。在进行删除操作的时候,如果删除双亲结点值,则相应的子女节点值也将被同时删除。

层次模型的优缺点

层次模型的优点主要有:

  1. 层次模型的数据结构比较简单清晰;
  2. 层次数据库的查询效率高。因为层次模型中记录之间的联系用有向边表示,这种联系在DBMS中常用指针来实现。因此这种联系也就是记录之间的存取路径。
  3. 层次数据模型提供了良好的完整性支持。

层次模型的缺点主要有:

  1. 现实世界中很多联系是非层次性的,如节点之间具有多对多的联系,不适合用层次模型表示。
  2. 如果一个节点具有多个双亲结点等,用层次模型表示这类联系就很笨拙只能通过引入冗余数据(易产生不一致性)或者创建自然的数据结构(引入虚拟节点)来解决。
  3. 查询子女节点必须通过双亲结点。
  4. 由于结构严密,层次命令趋于程序化。

http://chatgpt.dhexx.cn/article/2PZwkvmQ.shtml

相关文章

“OXO”历史上最早开发的电子游戏——游戏编年史

《OXO》是亚历山大道格拉斯(Alexander S. Douglas)在1952年开发的一款井字游戏,它是开发在电子延迟存储自动计算器(EDSAC)上,EDSAC是最早的存储程序计算机之一,具有可读取或写入的存储器&#x…

游戏发展史上十大经典之作

今天我们就来说说RTS发展历史上出现的经典之作,说说那些让人玩过之后难以忘怀的作品,请注意,这个榜单的排名不分先后,既已进入了经典的领域,还何必去分什么高下呢。 10.傲世三国 傲世三国绝对是中国最棒的RTS作品&…

哪些游戏称得上“次时代”? 次时代游戏史

最近在网络游戏界讨论的一个最热门的话题是“国产网游是否能称‘次世代网游’?”对于此话题,许多玩家一听就会嗤之以鼻,笑称“国产网游也配称次世代?”其实笔者觉得大家没有必要盲目的妄自尊菲薄,国产网游是否能称“次…

最早的计算机网络游戏,手机网络游戏早期发展史——图文游戏

原标题:手机网络游戏早期发展史——图文游戏 当手机游戏走入千家万户时,越来越多的端游玩家进入到了手游的世界,你可知,手机游戏的发展史要比电脑端游心酸的太多太多。 最早的手机游戏是在运营商的网站上在线操作的,那…

家用游戏机的发展史

大致线路 Nintendo Family computer Super family computer Nintendo 64Wii Wii U Sony PlayStation PlayStation 2PlayStation 3PlayStation 4 Microsoft Xbox Xbox360 Xbox one 第一世代(1972-1977) 世界上第一台家用游戏机是谁发明的?在哪一…

游戏引擎发展历程

游戏引擎(Game Engine)是什么?大多数人给出的解释都是基于engine的英文翻译,将游戏引擎等同于汽车中的引擎(发动机),再好一些的解释成动力,这些解释都对,但是动力只说并不…

游戏趣史:游戏引擎的发展史

游戏引擎,作为开发人员的重要伙伴,游戏引擎将开发过程中复杂繁琐的底层组件进行了系统化、标准化的处理。我们如今能够直观感受到的精美画面与物理效果,正是得益于它的不断发展。游戏引擎诞生:游戏产业的工业革命在二十世纪九十年…

80年代电子游戏及电脑游戏的发展历史

1980年代 主条目:1980 年代的电子游戏 20世纪80年代初,随着出版社的出现,电子游戏行业经历了第一次重大的成长困境。20世纪80年代早期的一些游戏只是现有街机游戏的简单复制品,而个人电脑游戏相对较低的出版成本使得大胆、独特的游…

游戏引擎的发展历程

本文来自: http://edu.gamfe.com/tutor/d/41955.html [1]游戏引擎(Game Engine)是什么?大多数人给出的解释都是基于engine的英文翻译,将游戏引擎等同于汽车中的引擎(发动机&#xf…

游戏引擎发展史

本次对引擎(真正意义上的游戏引擎)的历史回顾将主要围绕动作射击游戏的变迁展开,动作射击游戏同3D引擎之间的关系相当于一对孪生兄弟,它们一同诞生,一同成长,互相为对方提供着发展的动力。 1992年&#xff…

电子游戏发展史

四十年前的五月,一位从法西斯德国逃到美国的发明家Ralph Baer,搭建出了第一套家用电子游戏系统——Brown Box。这个游戏主机原型采用D-cell电池驱动,和一台黑白电视机相连。Baer回忆当年时说:“显然当时没有人能预见到今后会有怎样…

游戏开发入门(一)游戏发展史

游戏,本身是一个相当广泛的概念。如果要给一个定义的话,那么所有在特定时间、空间遵循某种规则最后得到“输赢”结果的行为方式都可以算作是游戏。不过现在每谈到游戏时,我们第一反应往往都是电子游戏。毕竟在当今互联网的时代下,…

游戏发展史(一)

大部分是wiki上翻译过来的,少部分个人见解,还有一些知乎上找到的资料。 游戏发展史 早期游戏(1948-1972) 1947年,由Thomas T.Goldsmith Jr.和Estle RayMann申请专利,是个用八个真空管模拟导弹互相攻击的游…

vue项目使用高德地图定位当前地址

vue项目使用高德地图定位当前地址 一、在项目中安装vue-amap插件二、页面代码三、data数据一、在项目中安装vue-amap插件 1.最终效果 2.安装命令npm install vue-amap --save3.在main.js中引入import VueAMap from vue-amap Vue.use(VueAMap) VueAMap.initAMapApiLoader({key: …

Android项目集成高德地图定位功能

1.在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址 Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。Project的build.gradle文件在Project目录…

高德地图定位实现

GoogleMap不存在,SouGou占有率不高,BaiDu niao性差,所以肯定实现地图首选高德啦.. 1.创建应用 官方文档地址: http://lbs.amap.com/api/android-location-sdk/guide/create-project/get-key 注册账号,创建对应的应用.这里基本就是填资料啦,没什么难的地方,只不过创建应用之后设…

高德地图定位api

转发 Android 高德地图API(详细步骤源码)一 - 云社区 - 腾讯云为了丰富对地图、定位的了解,在写了百度、腾讯的地图定位之后,终于到了高德地图了。我个人平时日常使用最多的定位软件就是高德地图。所以这篇文章,就带你…

android中高德地图定位功能并且获取定位的城市

一、概述 今天再一次用到了地图定位功能和地图显示功能,以前一直用的是高德地图定位,这次还是用高德,记录一下以便以后再做时方便一些。因为业务需要的功能不是很全,可以参考https://www.2cto.com/kf/201504/396156.html 高德地…

高德地图定位

高德地图的使用(二)定位 定位 显示地图过后,就是进行定位,这里我将介绍如何实现定位功能,以及如何改变定位的小图标 实现定位功能 定位功能基本有两种展现形式,一种是在地图上展示定位图标,…

vue简单使用高德地图定位

1、获取key 我们需要到高德开放平台生成key 我这里选的是web端,提交后会生成一个key值 2、安装vue-amap npm install vue-amap --save 3、在项目main.js引入vue-amap 1 import AMap from vue-amap; 2 Vue.use(AMap); 3 4 // 初始化vue-amap 5 AMap.i…