4、数据模型

前言:文章内容均为教材知识点梳理。

数据模型是一组严格定义的概念集合。

数据模型三要素:数据结构、数据操作、数据约束条件。

  1. 数据结构   数据结构是所研究的对象类型的集合。这些对象是数据库的组成部分,包括两类,一类是与数据类型、内容和性质有关的对象,例如层次模型或网状模型中的数据项和记录、关系模型中的关系和属性;另一类是与数据之间联系有关的对象,例如网状模型中区分记录型之间不同的联系,给联系命名,命名的联系称为系型。
  2. 数据操作   指对数据库中各种数据对象允许执行的操作集合。
  3. 数据约束条件   数据约束条件是一组数据完整性规则的集合。

        常见的数据模型有层次模型、网状模型和关系模型。层次模型和网状模型统称非关系模型,在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.   网状模型的存储结构(了解)

     ① 链接法

单向链接:一个节点包含指向其下一个节点的指针。

双向链接:两个相互关联的节点各自包含对方的指针,从而可以从任一方向导航至相关节点。

环状链接:节点形成一个闭环,最后一个节点指向第一个节点。

向首链接:所有节点都可能有一个指针指向一个特殊的头节点,方便查找整个记录链     

    ② 指引元阵列法 ③ 二进制阵列法 ④ 索引法

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值