1.5 常见的数据模型
数据库领域中的常见的数据模型有4种:层次模型、网状模型、关系模型、面向对象模型。其中,层次模型和网状模型统称为非关系模型,出现较早,现在已经逐渐被关系模型取代。关系模型的开发虽相对较晚,但由于其优点很多,具有很强的实用性,一直被广泛使用。下面分别介绍这几种数据模型。
1. 层次模型(Hierarchical Model)
层次模型用树形结构表示各类实体及实体间联系。它是数据库系统中最早出现的数据模型。
层次模型的特点:
• 有且仅有一个结点无双亲结点,称为根结点;
• 除根结点之外的其他结点有且仅有一个双亲结点。
层次模型结构如图1-14所示。
图1-14 层次模型
在层次模型中,每个结点表示一个记录类型,记录类型之间的联系用结点之间的连线实现,这样就会导致层次模型只能表示1:n的联系。尽管有许多辅助手段可以实现m:n的联系,但都比较复杂,不易掌握。
2. 网状模型(Network Model)
网状模型用网络结构表示各类实体及实体间联系。
网状模型的特点:
• 允许一个以上的结点无双亲结点;
• 一个结点可以有多于一个的双亲结点。
网状模型有很多种,图1-15为几种典型的网状模型图例。
图1-15 网状模型
在网状模型中,每个结点表示一个记录类型,每个记录类型可以包含若干个字段,结点之间的连线表示记录类型之间一对多的父子关系。
3. 关系模型(Relational Model)
用二维表的形式表示各类实体及实体间的联系。关系模型是目前最重要的一种数据模型。
(1)关系模型的数据结构
关系模型的数据结构就是一种二维表结构,它由行列组成,如表1-1所示学生信息表。
表1-1 学生信息表
表中涉及一些常见术语,对其解释如下。
①关系(Relation):一个关系对应着一张二维表,二维表名就是关系名。
②元组(Tuple):表中的一行就是一个元组。也称为记录。
③属性(Attribute):表中的一列称为一个属性,也称为字段。列的值就是属性值,属性值的取值范围为域(Domain)。
④分量:每一行对应的列的属性值,即元组中的一个属性值。
⑤关系模式:对关系的描述称为关系模式。一般表示为关系名(属性1,属性2,……,属性n)。
⑥候选键或候选码:关系中存在多个属性或属性集都能唯一标识该关系的元组,这些属性或属性集称为该关系的候选键或候选码。
⑦主键或主码:在一个关系的若干候选键中指定一个用来唯一标识该关系的元组,这个被指定的候选键称为主关键字,或简称为主键、关键字、主码。每一个关系都有且只能有一个主键,通常用较小的属性集作为主键。
⑧主属性和非主属性:包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性称为非主属性。
⑨外键或外码:当关系中的某个属性或属性集虽然不是该关系的主键,或者只是主键的一部分,但它却是别的关系的主键时,则称其为外键或者外码。
(2)关系模型的数据操作与完整性约束
关系模型的数据操作主要有查询、插入、删除和修改,这些操作必须满足关系模型的完整性约束条件。关系模型的完整性约束条件如下。
①实体完整性规则(Entity Integrity Rule):该规则要求关系中的元组在组成主键的属性上不能有空值且值必须唯一。
②参照完整性规则(Reference Integrity Rule)该规则用于约束相关联的数据表间的数据保持一致。通过建立外键可以实现数据表之间的参照完整性。
③用户定义的完整性规则:针对某一具体数据库的约束条件并由相关的应用环境而确定。
(3)关系模型的优缺点
关系模型的优点如下。
①数据结构单一。在该模型中,不管是实体还是实体之间的联系,都用关系来表示,而关系都对应一张二维表,数据结构简单、清晰。
②关系规范化,并建立在严格的数学理论基础之上。
③概念简单,用户容易理解和掌握,操作方便。
关系模型的缺点主要有:存储路径透明,查询效率不如非关系数据模型。
4. 面向对象模型(Object Oriented Model)
面向对象模型采用面向对象的方法来设计数据库,其数据库存储的数据以对象为单位,每个对象由属性和方法组成,具有类和继承等特点。
(1)面向对象模型中的常见概念
①类(Class):类是对客观世界中具有共同特征的事物的抽象。如学生是一个类、汽车也是一个类。
②对象(Object):对象是客观世界中概念化的实体,是类的具体实现。如一个学生、一辆汽车。
③封装(Encapsulation):利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,并且尽可能隐藏内部的细节,只保留一些对外接口来与外部联系。
④继承(Inheritance):在一个现有类的基础上去构建一个新类,构建出来的新类被称作子类或派生类,现有类被称作父类或基类,子类会自动拥有父类所有可继承的属性和方法。
(2)面向对象模型的优点
①适合处理丰富的数据类型,如图片、声音、视频、文本、数字等。
②开发效率高。面向对象模型提供强大的特性,如封装、继承、多态等,允许开发者不编写特定对象的代码就可以构成对象并提供解决方案,有效地提高了开发效率。
③提高了数据访问的性能。
(3)面向对象模型的缺点
①没有准确的定义。该模型很难提供一个准确的定义来说明面向对象的数据库管理系统应建成什么样。
②维护起来比较麻烦。当对象的定义被改变或移植到其他数据库时,操作起来比较困难。
③不适合所有应用。该模型更适合于数据对象之间存在复杂关系的应用,并不适合所有应用。