层次数据模型定义:层次数据模型是在树层次结构中组织数据的数据模型。
满足以下两个条件的基本层次关系的集合是层次模型
1 .有,但只有一个节点没有父母。 将该节点称为根节点
2 .有非根节点,只有一个父母
实际上,分层数据模型是指倒立生长的树。 从树(或二叉树)在基本数据结构中的定义可以看出,每个树都有一个根节点,其馀节点不是根节点。 每个节点表示对应于实体概念的记录类型,记录类型中的每个字段对应于实体的每个属性。 每个记录类型及其字段都必须记录。
分层模型的特征:
节点的父母是唯一的
只能直接处理一对多的实体联系
可以为每种记录类型定义排序字段,也称为代码字段
只有按路径显示记录的值时,才能说明其全部含义
没有一个孩子的记录值可以脱离父母的记录值而独立存在
实例:
层次模型的完整性约束条件
如果没有对应的父节点值,就不能插入子节点值
删除父节点值时,对应的子节点值也会同时被删除
更新操作时,必须更新所有对应的记录以确保数据完整性
优点
层次模型的数据结构比较简单清晰
查询效率高,性能高于关系模型,网格模型以上
分层数据模型提供良好的完整性支持
缺点
节点之间的多对多联系是不自然的
插入和删除操作有很多限制,APP应用程序的创建很复杂
查询孩子的节点必须通过父母的节点
分层命令是程序化的
层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统
网格数据模型定义:将实体和实体的联系用有向图表表示的数据结构模型称为网格数据模型。
满足以下两个条件的基本层次联系的集合称为网格数据模型:
1 .允许一个或多个节点没有父母
2 .一个节点可以有多个父母。
实际上,网格数据模型可以看作是缓解分层数据模型限制的扩展。 允许网格数据模型中的所有节点远离父节点存在。 这意味着允许整个模型中有两个或多个节点没有根节点,同时允许一个节点上有一个或多个父节点,从而形成网格定向图。 因此,节点之间的对应关系不是1:n,而是m:n的关系,克服了分层数据模型的缺点。
特点:
1 .可以存在两个或多个没有父节点的节点;
2 .允许一个节点上有多个父节点;
在网格数据模型中,每个节点表示一个图元,节点之间的有向线表示图元之间的联系。 对于网格数据模型,必须为每个联系人指定对应的名称。
实例:
优点:
网格数据模型可以简单地表示现实世界中许多复杂的关系
修改网格数据模型时,没有像层次数据模型那样严格的限制,即使删除节点的父节点也可以保留节点。 也可以插入没有父节点的节点。 无法在分层数据模型中插入根节点,除非首先插入根节点。
由于实体之间的关系可以在较低级别通过指针指针来实现,因此在此类数据库上执行操作的效率更高
缺点:
网格数据模型结构复杂,难以使用,随着应用环境的不断扩大,数据结构越来越复杂,插入、删除数据涉及的数据太多,不利于数据库的维护和重构。
网状数据模型的数据之间关联较大,该模型其实是一种导航式数据模型结构,不仅要说明要对数据做什么,还要说明操作记录的路径;
DDL、DML语言复杂,用户难以使用
记录之间的联系是通过访问路径实现的,用户需要了解系统结构的细节
网状模型与层次模型的区别
在网格模型中,多个节点可以没有父节点
在网格模型中,节点可以包含多个父节点
在网格模型中,两个节点之间可以有多个联系(复合联系)
网格模型可以更直接地表达现实世界
层次模型实际上是网格模型的特例
典型代表是DBTG系统,亦称CODASYL系统,是20世纪70年代由DBTG提出的一个系统方案。实际系统:Cullinet Software公司的 IDMS、Univac公司的 DMS1100、Honeywell公司的IDS/2、HP公司的IMAGE。
三.关系型数据模型
关系数据模型对应的数据库当然是关闭的
系型数据库了,这是目前应用最多的数据库。定义:使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。
关系型数据库是目前最流行的数据库,同时也是被普遍使用的数据库,如MySQL就是一种流行的数据库。支持关系数据模型的数据库管理系统称为关系型数据库管理系统。
特征:
1. 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统一的关系—一张二维表,在关系模型中,操作的对象和结果都是一张二维表,它由行和列组成;
2. 关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系—表,来实现多对多的关系;
3. 关系必须是规范化的关系,即每个属性是不可分割的实体,不允许表中表的存在;
实例:
优点:
结构简单,关系数据模型是一些表格的框架,实体的属性是表格中列的条目,实体之间的关系也是通过表格的公共属性表示,结构简单明了;
关系数据模型中的存取路径对用户而言是完全隐蔽的,是程序和数据具有高度的独立性,其数据语言的非过程化程度较高;
操作方便,在关系数据模型中操作的基本对象是集合而不是某一个元祖;
有坚实的数学理论做基础,包括逻辑计算、数学计算等;
缺点:
查询效率低,关系数据模型提供了较高的数据独立性和非过程化的查询功能(查询的时候只需指明数据存在的表和需要的数据所在的列,不用指明具体的查找路径),因此加大了系统的负担;
由于查询效率较低,因此需要数据库管理系统对查询进行优化,加大了DBMS的负担;
相关概念:
关系(Relation):一个关系对应通常说的一张表
元组(Tuple):表中的一行即为一个元组
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
主码(Key):也称码键。表中的某个属性组,它可以唯一确定一个元组
域(Domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
分量:元组中的一个属性值。
关系模式:对关系的描述,关系名(属性1,属性2,…,属性n),如:学生(学号,姓名,年龄,性别,系名,年级)
关系必须是规范化的,满足一定的规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
术语对比
关系的完整性约束条件
实体完整性
实体完整性是指实体的主属性不能取空值。实体完整性规则规定实体的所有主属性都不能为空。实体完整性针对基本关系而言的,一个基本关系对应着现实世界中的一个主题,例如上例中的学生表对应着学生这个实体。现实世界中的实体是可以区分的,他们具有某种唯一性标志,这种标志在关系模型中称之为主码,主码的属性也就是主属性不能为空。
参照完整性
在关系数据库中主要是值得外键参照的完整性。若A关系中的某个或者某些属性参照B或其他几个关系中的属性,那么在关系A中该属性要么为空,要么必须出现B或者其他的关系的对应属性中。
用户定义的完整性
用户定义完整性是针对某一个具体关系的约束条件。它反映的某一个具体应用所对应的数据必须满足一定的约束条件。例如,某些属性必须取唯一值,某些值的范围为0-100等。
计算机厂商新推出的数据库管理系统几乎都支持关系模型