《数据库原理与应用(第3版)》——2.3 组织层数据模型

简介:

本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第2章,第2.3节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 组织层数据模型

组织层数据模型是从数据的组织形式的角度来描述信息,目前,在数据库技术的发展过程中用到的组织层数据模型主要有:层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)和对象关系模型(Object Relational Model)。组织层数据模型是按组织数据的逻辑结构来命名的,比如层次模型采用树形结构。而且各数据库管理系统也是按其所采用的组织层数据模型来分类的,比如层次数据库管理系统就是按层次模型来组织数据,而网状数据库管理系统就是按网状模型来组织数据。
1970年,美国IBM公司研究员E.F.Codd首次提出了数据库系统的关系模型,开创了关系数据库和关系数据理论的研究,为关系数据库技术奠定了理论基础。关系模型从20世纪70~80年代开始到现在已经发展得非常成熟,本书的重点也是介绍关系模型。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,非关系系统的产品也大都加上了关系接口。
一般将层次模型和网状模型统称为非关系模型。非关系模型的数据库系统在20世纪70年代至80年代初曾非常流行,在数据库管理系统的产品中占主导地位,但现在已逐步被采用关系模型的数据库管理系统所取代。20世纪80年代以来,面向对象的方法和技术在计算机各个领域,包括程序设计语言、软件工程、信息系统设计、计算机硬件设计等方面都产生了深远的影响,也促进了数据库中面向对象数据模型的研究和发展。

2.3.1 层次数据模型

层次数据模型(层次模型)是数据库管理系统中最早出现的数据模型。层次数据库管理系统采用层次模型作为数据的组织方式。层次数据库管理系统的典型代表是IBM公司的IMS(Information Management System),这是IBM公司1968年推出的第一个大型的商用数据库管理系统。
层次数据模型用树形结构表示实体和实体之间的联系。现实世界中许多实体之间的联系本身就呈现出一种自然的层次关系,如行政机构、家族关系等。
构成层次模型的树由节点和连线组成,节点表示实体,节点中的项表示实体的属性,连线表示相连的两个实体间的联系,这种联系是一对多的。通常把表示“一”的实体放在上方,称为父节点;把表示“多”的实体放在下方,称为子节点。将不包含任何子节点的节点称为叶节点,如图2-4所示。
层次模型可以直接、方便地表示一对多的联系。但在层次模型中有以下两点限制:
1)有且仅有一个节点无父节点,这个节点即为树的根。
2)其他节点有且仅有一个父节点。
层次模型的一个基本特点是,任何一个给定的记录值只有从层次模型的根部开始按路径查看时,才能明确其含义,任何子节点都不能脱离父节点而存在。
图2-5说明了一个具有层次结构的学校组织机构数据模型,该模型有4个节点,“学院”是根节点,由学院编号、学院名称和办公地点三项组成。“学院”节点下有两个子节点,分别为“教研室”和“学生”。“教研室”节点由“教研室名”、“室主任”和“室人数”三项组成,“学生”节点由“学号”“姓名”“性别”和“年龄”四项组成。“教研室”节点下又有一个子节点“教师”,因此,“教研室”是“教师”的父节点,“教师”是“教研室”的子节点。“教师”节点由“教师号”“教师名”和“职称”项组成。

screenshot

图2-6是图2-5数据模型对应的一个值。
screenshot

图2-6 学院层次数据库的一个值
层次数据模型只能表示一对多联系,不能直接表示多对多联系。但如果把多对多联系转换为一对多联系,又会出现一个子节点有多个父节点的情况(如图2-7所示,学生和课程原本是一个多对多联系,在这里将其转换为两个一对多联系),这显然不符合层次数据模型的要求。一般常用的解决办法是把一个层次模型分解为两个层次模型,如图2-8所示。
层次数据库是由若干个层次模型构成的,或者说它是一个层次模型的集合。

2.3.2 网状数据模型

在现实世界中事物之间的联系更多的是非层次的,用层次数据模型表达现实世界中存在的联系有很多限制。如果去掉层次模型中的两点限制,即允许一个以上的节点无父节点,并且每个节点可以有多个父节点,便构成了网状模型。
用图形结构表示实体和实体之间的联系的数据模型称为网状数据模型(网状模型)。在网状模型中,同样使用父节点和子节点这样的术语,并且同样一般把父节点放置在子节点的上方。图2-9所示为几个不同形式的网状模型形式。

screenshot

从图2-9可以看出,网状模型父节点与子节点之间的联系可以不唯一,因此,就需要为每个联系命名。如图2-9a中,节点R3有两个父节点R1和R2,因此,将R1与R3之间的联系命名为L1,将R2与R3之间的联系命名为L2。图2-9b和c与此类似。
由于网状模型没有层次模型的两点限制,因此可以直接表示多对多联系。但在网状模型中多对多的联系实现起来太复杂,因此一些支持网状模型的数据库管理系统对多对多联系还是进行了限制。例如,网状模型的典型代表CODASYL(Conference On Data System Language)就只支持一对多联系。
网状模型和层次模型在本质上是一样的。从逻辑上看,它们都是用连线表示实体之间的联系,用节点表示实体;从物理上看,它们都是用指针来实现文件以及记录之间的联系,其差别仅在于网状模型中的连线或指针更复杂,更纵横交错,从而使数据结构更复杂。
网状模型的典型代表是CODASYL,它是CODASYL组织的标准建议的具体实现。层次模型是按层次组织数据,而CODASYL是按系(set)组织数据。所谓“系”可以理解为命名了的联系,它由一个父记录型和一个或若干个子记录型组成。图2-10为网状模型的一个示例,其中包含四个系,S-G系由学生和选课记录构成,C-G系由课程和选课记录构成,C-C系由课程和授课记录构成,T-C系由教师和授课记录构成。实际上,图2-7所示的具有两个父节点的结构也属于网状模型。

screenshot

2.3.3 关系数据模型

关系数据模型是目前最重要的一种数据模型,关系数据库就是采用关系数据模型作为数据的组织方式。关系数据模型源于数学,它把数据看作二维表中的元素,而这个二维表在关系数据库中就称为关系。关于关系的详细讨论将在第3章进行。
用关系(表格数据)表示实体和实体之间的联系的模型就称为关系数据模型。在关系数据模型中,实体本身以及实体和实体之间的联系都用关系来表示,实体之间的联系不再通过指针来实现。
表2-1和表2-2所示分别为“学生”和“选课”关系模型的数据结构,其中“学生”和“选课”间的联系是靠“学号”列实现的。
screenshot

在关系数据库中,记录值仅仅构成关系,关系之间的联系是靠语义相同的字段(称为连接字段)值表达的。理解关系和连接字段(即列)的思想在关系数据库中非常重要。例如,要查询“刘晨”的考试成绩,则首先要在“学生”关系中得到“刘晨”的学号值,然后根据这个学号值再在“选课”关系中找出该学生的所有考试记录值。
对于用户来说,关系的操作应该很简单,但关系数据库管理系统本身是很复杂的。关系操作之所以对用户很简单,是因为它把大量的工作交给了数据库管理系统来实现。尽管在层次数据库和网状数据库诞生之时,就有了关系数据库的设想,但研制和开发关系数据库管理系统却花费了比人们想象要长得多的时间。关系数据库管理系统真正成为商品并投入使用要比层次数据库和网状数据库晚十几年。但关系数据库管理系统一经投入使用,便显示出了强大的活力和生命力,并逐步取代了层次数据库和网状数据库。现在耳熟能详的数据库管理系统几乎都是关系数据库管理系统,比如Microsoft SQL Server、Oracle、IBM DB2、Access等。
关系数据模型易于设计、实现、维护和使用,它与层次数据模型和网状数据模型的最根本区别是,关系数据模型不依赖于导航式的数据访问系统,数据结构的变化不会影响对数据的访问。

相关文章
|
5月前
|
存储 机器学习/深度学习 搜索推荐
深入解析矢量数据库的数据模型与索引机制
【4月更文挑战第30天】本文深入探讨了矢量数据库的数据模型和索引机制。向量数据库以高维向量表示数据,采用稀疏或密集向量形式,并通过数据编码和组织优化存储与检索。索引机制包括基于树的(如KD-Tree和Ball Tree)、基于哈希的(LSH)和近似方法(PQ),加速相似性搜索。理解这些原理有助于利用矢量数据库处理大规模高维数据,应用于推荐系统、图像搜索等领域。随着技术发展,矢量数据库将扮演更重要角色。
|
1月前
|
前端开发 数据库 开发者
数据模型(数据库表设计)生成代码
BizWorks ToolKit 插件集成 Mybatis-Plus 代码生成工具,支持从数据库表批量生成代码,简化开发流程。本文详细介绍配置方法及项目示例,包括配置文件格式、生成选项及具体操作步骤,帮助开发者快速实现代码同步更新。配置文件 `.mp.yaml` 支持自定义输出目录、生成组件等,适用于多种项目结构。
33 0
|
2月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
24 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库数据模型概念入门及基础的SQL语句2024
MySQL数据库数据模型概念入门及基础的SQL语句2024
36 0
|
4月前
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
48 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——概述-MySQL的安装、启动与停止和客户端连接、关系型数据库(RDBMS)、数据模型
MySQL数据库——概述-MySQL的安装、启动与停止和客户端连接、关系型数据库(RDBMS)、数据模型
53 0
|
5月前
|
存储 SQL 数据挖掘
数据模型概述与数据库基础
数据模型是描述现实世界数据对象结构的形式化、真实和易理解的表示。分为概念模型(信息模型)和数据模型,前者面向用户,后者关注计算机实现。数据库是结构化、共享、低冗余的数据集合,提供数据独立性。数据库管理系统(DBMS)负责数据的存储、访问和管理,而数据库系统(DBS)包括数据库、DBMS、应用系统、DBA和用户。数据库系统开发涉及需求分析、系统设计(概念设计、逻辑设计、物理设计)、系统实现和运行维护(数据更新、备份、分析等)。
37 0
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Cell
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。它是一个分布式数据库的NoSQL数据库,主要用于存储和处理海量数据。HBase的核心特性包括高可用性、高性能和高伸缩性。在阿里云开发者社区中,我们将介绍HBase的基本概念和架构,以及它的基本数据模型Cell。
656 0
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Row
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
264 0