1、第六章: 非关系数据模型简介,常用数据模型层次数据模型网状数据模型关系数据模型面向对象的数据模型,现实世界,信息世界,机器 世界,概念模型,数据模型,非关系数据模型,层次数据模型,在现实世界中, 有很多事物是按层次组织起来的, 层次数据模型的提出, 首先是为了模拟这种案层次组织起来的事物层次数据模型用树形结构来表示各类实体以及实体之间的联系层次数据库采用层次数据模型作为数据的组织方式基本概念记录、记录型和字段(一定是简单数据类型),层次数据模型,双亲子女关系(parent-child relationship): 简称PCR, 代表两个记录型之间的一对多关系,系,记录型,记录,字段,系,班,1
2、,n,PCR型,计算机系,901班,911班,931班,921班,一个实例,层次数据模型,层次数据模式: 利用PCR可以构成层次数据模式,系,班,层次数据模式,教研组,学生,教师,例: 某大学设有若干系, 每个系由不同的教研组构成, 每个教研组有多名教师; 每个系设有多个班级, 每个班级有若干学生层次数据模式是一棵树除根外, 所有的记录型都应有唯一的双亲,但可以有多个子女层次数据模式可以有多个实例, 这些实例组成森林,层次数据模型,虚拟记录: 表示非层次的事物多对多关系:,计算机系,901班,911班,931班,921班,软件教研组,软件教研组,王,张,李,赵,钱,孙,周,吴,郑,洪,陈,丁,
3、.,.,.,.,.,.,层次数据模式的一个实例,层次数据模型,学生,课程,m,n,ER图,选修,学生,课程,PCR型,王一,人工智能,张三,课程,学生,或,PCR型,李四,人工智能,数据库,人工智能,数据库,实例,问题: 大量冗余,层次数据模型,班,学生,PCR型,学生,和,PCR型,班,学生,运动队,运动队,901班,王,张,.,李,921班,钱,孙,.,田径队,钱,孙,李,问题: 大量冗余,一个记录型是两个以上PCR子女:,层次数据模型,供应,PCR型,零件,多元关系:,供应商,项目,供应,m,p,零件,n,供应商,项目,问题: 大量冗余,层次数据模型,用虚拟记录解决上述问题:,学生,(课
4、程)v,课程,(学生)v,班,学生,运动队,(学生)v,供应,零件,(供应商)v,(项目)v,供应商,项目,层次数据模型,层次数据模型的线性表示: 存储器是线性的, 层次数据必须变换成线性才能存储, 层次序列(先序遍历)层次路径例子: 层次序列表示为,层次数据模型,约束: 层次数据模型因DBMS而异有些语义上的约束有应用程序来检查与层次数据模型直接有关的约束有:除了根记录以外, 任何其他记录不能离开双亲记录而孤立存在(插入和删除)任何记录只允许有一个双亲记录虚拟记录的指针必须指向一个实际存在的记录(删除)虚拟记录不得为根,层次数据模型,操作: 以查找为例来说明层次数据模型的操作Get Uniq
5、ue(GU): 按给定条件,沿层次路径查找所需记录(要查找一个记录,必须从根记录开始)查找计算机系911班的第一个学生GU系(系名=计算机系), 班(班名=911班), 学生;Get Next Parent(GNP): 在当前双亲下, 按层次序列查找下一个记录GU系(系名=计算机系), 班(班名=911班), 学生;while not fail do GNP 学生;层次数据模型的优缺点p26层次DBMS在6070年代流行, 例如IBM的IMS,网状数据数据模型,基本概念和结构:记录、记录型和数据项数据项可以是多值和复合的数据项(例如地址)系(set): 代表两个记录型之间的1:n联系, 有系型
6、和系值之分,班级,学生,1,n,有,班级,学生,系型,首记录型,属记录型,多属系: 一个系可以有多种类型的属记录,账户,存款帐,提款帐,转帐,网状数据数据模型,一个记录型可以作为几个系的首记录, 也可以作为几个系的属记录(无虚拟记录)一个记录型不能既作为一个系的首记录, 又作为这个系的属记录联系记录型,EMP,1,n,领导,EMP,LINK,系型,联系记录型,E4,S1,S2,L1,E7,E9,L2,L3,E3,E5,E1,E6,S1,S1,S1,S2,S2,S2,网状数据数据模型,一个记录值不能出现在同一系型的多个系值中,系型,S1,C1,C2,C3,C4,C5,C6,S2,学生,课程,m,n,选修,学生,课程,正确:,学生,LINK,课程,SL,CL,系型,S1,L1,L2,L3,L4,L5,L6,S2,L4,C1,C2,C3,C4,C5,C6,SL,SL,CL,CL,CL,CL,CL,CL,网状数据数据模型,三元联系的网状表示系的典型实现方式: 链式实现方式(o:首记录, s:属记录)约束和操作网状数据模型的优缺点p30,供应商,项目,零件,LINK,S1,S1,S1,S1,前向指针,后向指针,首记录指针,