前言:文章内容均为教材知识点梳理。
数据模型是一组严格定义的概念集合。
数据模型三要素:数据结构、数据操作、数据约束条件。
- 数据结构 数据结构是所研究的对象类型的集合。这些对象是数据库的组成部分,包括两类,一类是与数据类型、内容和性质有关的对象,例如层次模型或网状模型中的数据项和记录、关系模型中的关系和属性;另一类是与数据之间联系有关的对象,例如网状模型中区分记录型之间不同的联系,给联系命名,命名的联系称为系型。
- 数据操作 指对数据库中各种数据对象允许执行的操作集合。
- 数据约束条件 数据约束条件是一组数据完整性规则的集合。
常见的数据模型有层次模型、网状模型和关系模型。层次模型和网状模型统称非关系模型,在20世纪70年代至80年代初非常流行,而之后,被关系模型逐步取代。现在流行的数据库系统大都是基于关系模型的。
在非关系模型中,实体集用记录表示,实体的属性对应记录的数据项(或字段)。实体集之间的联系转换成记录之间的两两联系。
非关系模型中数据结构的单位是基本层次联系。所谓基本层次是指两个记录及他们之间的一对多(包括一对一)的联系。
一、层次模型(最早)(树形结构)
1. 在数据结构中,定义满足下面两个条件的基本层次联系的集合为层次模型。
① 有且仅有一个结点没有双亲结点,这个结点叫根结点。
② 除根结点之外的其他结点有且只有一个双亲结点。
2. 层次模型的数据表示方法
实体集使用记录表示;记录型包含若干个字段,字段用于描述实体属性;记录值表示实体;记录之间的联系使用基本层次联系表示。层次模型中的每个记录可以定义一个排序字段,排序字段也叫码字段,其主要作用是确定记录的顺序。如果排序字的值是唯一的,则它能唯一地表示一个记录值。
层次模型使用结点表示记录,记录之间的联系用结点之间的连线表示,这种联系是父子之间的一对多的实体联系。
位于根节点的记录叫根记录,以该图为例,其根记录值是“D10,计算机系,9号楼”。层次结构数据的一个实例由一个根记录值和它的全部属记录值组成,全部属记录值包括属记录、属记录的属记录......
层次模型具有一个基本特点:对于任何一个给定的记录值,只有按其路径查看,才能显示出它的全部意义,没有一个子女记录值能脱离双亲记录值而独立存在。(比如图中李丽同学,不指出双亲,则不知道她是哪个院系的学生。)
3. 层次模型中多对多联系的表示
前面提到层次模型只能表示一对多(包括一对一),所以要表示多对多,应采用分解的方法。
以学生和课程为例,学生可以选修多门课程,一门课程可以由多个学生选修。
方法一:冗余结点分解法。它将一组多对多关系转成两组一对多关系,一组是一个学生选多门课程的学生和课程之间的 1:n 联系,另一组是一门课程有多个学生选的课程与学生之间的 1:n联系。缺点是造成冗余。
方法二:虚拟结点分解法。对比法一,它将冗余结点转换为虚拟结点。虚拟结点是一个指引元,指向所代替的结点。该方法的优点是占用储存空间小,能够避免数据的不一致性问题;缺点是改变储存位置时有可能引起虚拟结点中指针的修改。
4. 层次模型的数据操作和完整性约束条件
在执行数据操作时候,要满足完整性约束条件:
(1)在插入记录值时,如果没有指明相应的双亲记录值,则不能插入子女记录值。
(2)进行删除记录操作时,如果删除双亲记录值,相应的子女结点值也同时被删除。
(3)进行修改时,应修改所有相应的记录,以保证数据的一致性。比如冗余结点分解法得到的层次模型中,若修改一个学生的年龄,则两处学生记录值的年龄都要修改。
5. 层次模型存储结构
(1)邻接存储法 邻接存储法是按照层次树前序穿越的顺序,把所有记录值依次邻接存放,即通过物理空间的位置相邻来安排(或隐含)层次顺序,实现存储。
(2)链接存储法包括子女-兄弟链接法和层次序列链接法。
子女-兄弟链接法 每个记录设两类指针,分别指向最左边的子女(每个记录型对应一个)和最近的兄弟
层次序列链接法 按树的前序穿越顺序链接各记录值
二、网状模型(最早)(树形结构)
现实世界中,许多事物之间的联系时非层次结构的。这时候需要用网状模型表示。
1. 定义满足下面两个条件的基本层次联系的集合为网状模型。
① 有一个以上的结点没有双亲。
② 结点可以有多于一个的双亲。
此外,网状模型还允许两个结点之间有多种联系。
2. 网状模型的数据表示方法
1)和层次模型一样,网状模型也使用记录和记录值表示实体集和实体;每个结点也表示一个记录,每个记录可包含若干个字段。
2)网状模型中的联系用结点间的有向线段表示。每个有向线段表示一个记录间的一对多的联系。网状模型中的联系叫系,两个记录之间可以存在多个系,而系必须命名,如上图中的L1,L2。
3. 网状模型的完整性约束条件
1)支持记录码的概念。在网状模型中,每个记录(结点)都应有一个或一组能唯一标识它的字段(码),确保记录的唯一性。
2)保持一个联系中双亲记录和子女记录之间是一对多的联系。
3)网状模型还强调一种称为结构完整性的概念,即实体之间的链接结构必须保持一致和正确。即“没有双亲节点不能插入子女”,“双亲删除时子女也连同删除”。
4. 网状模型的存储结构(了解)
① 链接法
单向链接:一个节点包含指向其下一个节点的指针。
双向链接:两个相互关联的节点各自包含对方的指针,从而可以从任一方向导航至相关节点。
环状链接:节点形成一个闭环,最后一个节点指向第一个节点。
向首链接:所有节点都可能有一个指针指向一个特殊的头节点,方便查找整个记录链
② 指引元阵列法 ③ 二进制阵列法 ④ 索引法