Access 2010数据库实用教程
上QQ阅读APP看书,第一时间看更新

2.4 数据模型

为了反映事物本身及事物之间的各种联系,数据库中的数据必须有一定的结构,这种结构用数据模型来表示。

2.4.1 数据模型概述

1.概念

在计算机信息处理中常用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲,数据模型就是对现实世界的模拟。对模型的最一般的理解就是对现实世界中复杂对象的抽象描述,获取模型的抽象过程就是建模过程。

数据库中的数据模型可以将复杂的现实世界要求反映到计算机数据库中的物理世界,这种反映是一个逐步转化的过程,它分为抽象与实现两个阶段:由客观现实世界开始,经历抽象的信息世界,最终到达计算机世界,如图2-2所示。

图2-2 建模过程示意图

(1)客观现实世界

用户为了某个应用领域的特定需要,将现实世界中的需求用数据库来实现,我们所见到的是客观世界中一个划定边界的环境,称为客观现实世界。

(2)抽象信息世界

通过抽象对客观现实世界进行数据库级上的刻画所构成的逻辑模型称为抽象信息世界。抽象信息世界与数据库的具体模型有关,如层次、网状、关系模型等。

(3)计算机世界

在信息世界的基础上致力于其在计算机物理结构上的描述,从而形成的物理模型称为计算机世界。现实世界的需求只有在计算机世界中才能得到真正的物理实现,而这种实现是通过客观信息世界逐步转化而来的。

2.数据模型的三要素

在数据库中,数据模型就是数据库系统中用于提供信息表示和操作手段的形式框架。数据模型通常是由数据结构、数据操作和数据的完整性约束3个要素组成的。

(1)数据结构

数据结构用于描述系统的静态特性,是所研究的对象类型的集合。这些对象是数据库的组成部分,它包括用于表示数据类型、内容、性质的对象和表示数据之间联系的对象。

(2)数据操作

数据操作用于描述系统的动态特性,是指在各种对象上的允许执行的操作集合及操作规则。数据库的操作主要包括检索与更新两种,其中更新操作包含插入、删除和修改。

(3)数据的完整性约束

数据的完整性约束是指为了保证数据的正确性、有效性和相容性,预先规定的一些规则条件,用以限定数据库状态以及状态的变化。例如,学生的性别只有男和女两种状态。

数据模型的三要素中,数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如,层次结构的数据库称为层次模型数据库,网状结构的数据库称为网状模型数据库,关系结构的数据库称为关系模型数据库。

2.4.2 数据模型的种类

数据模型按照不同的应用层次分成三种类型:概念模型、逻辑模型、物理模型。概念模型面向客观现实世界;逻辑模型面向抽象信息世界;物理模型也称为实现模型,它面向计算机世界。

1.概念模型

概念模型是一种面向客观世界、面向用户的模型。它与具体的数据库管理系统和具体的计算机平台无关。概念模型着重于对客观世界复杂事物的描述以及对它们的内在联系的刻画。目前,最著名的概念模型有实体联系模型和面向对象模型,这里仅介绍实体联系模型。

实体联系模型(Entity-Relationship Model,E-R模型)是广泛使用的概念模型。在通常的数据库设计工作中,首先要创建一个E-R模型,然后再把它转化成计算机能接受的逻辑模型与物理模型。E-R模型采用了3个基本概念:实体、联系、属性。

(1)实体

现实世界中的事物可以抽象成为实体,实体是概念世界的基本单位,它们是客观存在的,并且不同实体间又有区别,如一个学生、一名教师、一门课程等。实体也可以是一个抽象的事件,如一场比赛、一次考试等。凡是有共性的实体可组成一个集合,称为实体集。

(2)属性

事物的特性可以用属性来描述,如学生的身高、体重、性别、年龄等用来描述学生的基本情况。一个实体可以具有若干个属性。属性由属性名和属性值两个要求构成。一个属性值的取值范围称为该属性的值域,如性别属性的值域为“男”或“女”。

(3)联系

现实世界中事物之间所固有的关联称为联系。在概念世界中联系反映了不同实体集之间的关联性,如学生和课程之间存在学生选修课程的联系。

现实世界是一个有机的互相关联的整体,为了能够更好地表示现实世界,在概念模型中,必须把实体、属性、联系三者结合起来。在现实世界中,联系是客观存在的,根据实体集之间的匹配关系,可将联系分为三类:

①一对一联系。如果实体集A中的每一个实体只与实体集B中的一个实体有关联,反之亦然,则说这种联系是一对一联系。例如,一个学校只有一名校长,并且一名校长只能在一所学校任职,不可以在别的学校工作,则校长与学校的关系就是一对一的联系,如图2-3(a)所示。

②一对多联系。如果实体集A中的每一个实体,在实体集B中都有多个实体与之对应;反过来,实体集B中的每一个实体,在实体集A中只有一个实体与之对应,则称实体集A与实体集B是一对多的联系。例如,一个班级有多名学生,一名学生只能隶属于一个班级,则班级和学生是一对多的联系,如图2-3(b)所示。

③多对多联系。如果实体集A中的每一个实体,在实体集B中都有多个实体与之对应;反过来,实体集B中的每一个实体,在实体集A中也有多个实体与之对应,则称实体集A与实体集B是多对多的联系。例如,一个学生可以选修多门课程,一门课程可以被多名学生选修。学生和课程的联系就是多对多的联系,如图2-3(c)所示。

(4)E-R图

确定客观现实世界中的所有实体、属性与联系后,可以用E-R图来描述概念模型。在E-R图中,用矩形表示实体集,用椭圆表示实体的属性,用菱形表示联系。例如,教学管理的建模中,可用图2-4所示的E-R图表达学生和课程之间的关系。为了进一步刻画实体间的对应关系,可在实体与联系之间的直线上标明联系的类型,如1∶1、1∶n、n∶m,例如,学生与课程之间存在多对多联系,所以标上n∶m的联系类型。

图2-3 联系类型示意图

图2-4 E-R图

在概念上,E-R模型中的实体、属性与联系是3个有明显区别的不同概念。但在分析客观世界的具体事物时,对某个具体数据对象,它是实体还是属性或联系,则是相对的,所做的分析与设计与实际应用的背景以及设计人员的理解有关。这是工程实践中构造E-R模型的难点之一。

2.逻辑模型

逻辑模型是面向数据库系统的模型,着重于在数据库系统级别的实现。常见的数据模型有层次模型、网状模型、关系模型、面向对象模型,数据模型的发展经历了非关系化模型(层次模型、网状模型)、关系模型,正在走向面向对象模型。成熟并大量使用的是关系模型,这里重点介绍关系模型。

(1)层次模型

层次模型是数据库系统中最早出现的逻辑模型,它用树形结构来表示各类实体及实体之间的联系。层次模型有两个主要特点:

①有且只有一个根结点,该结点没有双亲。

②除根结点外的其他结点都有且只有一个双亲。

层次模型从形象思维的角度来看,像一棵倒立的树。例如,学校的组织机构,就是一个层次结构的模型,如图2-5所示。

(2)网状模型

网状模型是层次模型的扩展,它去掉了层次模型的两个限制条件,允许结点没有双亲,也允许结点有多个双亲。从图论的观点看,网状模型是一个不加任何条件限制的无向图。例如,可以将教学管理活动中的实体描述成为网状模型,如图2-6所示。

网状模型在对数据概念的描述上明显优于层次模型,它对数据表示更加接近于现实,而且数据操纵效率更高,更为成熟。但是,网状模型数据库在使用时涉及系统内部的物理因素较多,用户操作使用并不方便,其数据模式与系统实现均不太理想。

图2-5 层次模型

图2-6 网状模型

(3)关系模型

关系模型是把概念模型中实体以及实体之间的各种联系均用关系来表示。从用户的观点来看,关系模型中数据的逻辑结构是一张二维表,它由行列构成。表2-2所示的是一个学生数据表。

表2-2 学生表

①关系模型中基本概念。

● 关系。每一个关系用一张二维表来表示,常称为表。每一个关系表都有个区别于其他关系表的名字,称为关系名。关系是概念模型中同一类实体以及实体之间联系集合的数据模型表示,如图2-7中的学生数据表。

图2-7 学生数据表

● 元组。二维表中的每一行数据总称为一个元组或记录。一个元组是对应概念模型中一个实体的所有属性值的总称。例如,图2-7中有6行数据,也就有6个元组。由若干个元组就可构成一个具体的关系,一个关系中不允许有两个完全相同的元组。

● 属性。二维表中的每一列即为一个属性,每个属性都有一个显示在每一列首行的属性名。在一个关系表当中不能有两个同名属性。例如,图2-7中有7列,对应7个属性(学号,姓名,性别,出生日期,是否团员,班级编号,毕业学校)。关系的属性对应概念模型中实体型以及联系的属性。

● 域。关系中每个属性的值是有一定变化范围的,如图2-7中,属性“学号”的变化范围是0000000000000~9999999999999;属性“姓名”的变化范围是15位字符;属性“性别”的变化范围只能是男、女两个值;属性“出生日期”的变化范围只能是1900年1月1日—2013年12月31日;属性“是否团员”的变化范围只能是TRUE、FALSE两个属性值;“班级编号”的变化范围是0000000~999999;“毕业学校”的变化范围是所有可能的学校集合。每一个属性所对应的变化范围称为属性的变域或域,它是属性值的集合,关系中所有属性的实际取值必须来自于它对应的域。例如,属性“班级编号”的域是6位字符,因此“班级编号”中出现的所有取值的集合必须是该域上的一个子集。

● 候选键。也称候选码,二维表中能唯一标识元组的最小属性集。例如,表2-2中如果没有同姓名的情况,则学号和姓名均是候选键。在某些时候,候选键可由两个或两个以上的属性共同承担,表2-2中如果有同姓名的情况,候选键可由学号和姓名共同担任。

● 主键。也称主码,若二维表中有多个候选键,则选定其中一个作为主键供用户使用。例如,表2-2中学号和姓名均是候选键,可以选择学号作为该表的主键。

● 外键。也称外码,若表A中的某个属性是主键,该属性在表B中不是主键,则称该属性可称为表B的外键。例如,表2-2中学号是主键,而且学号属性在成绩表中也出现了,但是学号不是成绩表的主键,则学号可称为成绩表的外键。

● 分量。一个元组在一个属性域上的取值称为该元组在此属性上的分量。

● 关系模式。二维表的表头行称为关系模式。即一个关系的关系名及其全部属性名的集合。关系模式是概念模型中实体型以及实体型之间联系的数据模型表示。一般表示为关系名(属姓名1,属性名2,……,属性名n)。

表2-2学生表中的关系模式为学生信息表(学号,姓名,性别,出生日期,是否团员,班级编号,毕业学校)。

关系模式和关系是型与值的联系。关系模式指出了一个关系的结构;而关系则是由满足关系模式结构的元组构成的集合。因此关系模式决定了关系的变化形式,只要关系模式确定了,由它所产生的值——关系也就确定了。关系模式是稳定的、静态的,而关系则是随时间变化的、动态的。但通常在不引起混淆的情况下,两者可都成为关系。

一个具体的关系数据库是一个关系的集合,而关系数据库模式是关系模式的集合。

②关系模型的主要性质。关系模型中的二维表一般满足7个特性,这是在关系建模时要重点考虑的问题。这7个特性是:

● 元组个数有限性。二维表中元组个数是有限的。

● 元组的唯一性。二维表中任意两个元组不能完全相同。

● 元组的次序无关性。二维表中元组的次序,即行的次序可以任意交换,不影响数据的使用。

● 元组分量的原子性。二维表中元组的分量(即属性)是不可分割的基本单位。即每个属性的值不能包含两种含义的数据。例如,在电话号码属性中不能同时有移动手机号与固定电话号码。

● 属性名唯一性。二维表中不同的属性要有不同的属性名。

● 属性次序无关性。二维表中属性的次序可以任意交换。

● 属性分量值域的同一性。二维表中属性的分量具有与该属性相同的值域,即列是同质的。

例如,所有元组的性别值均满足同一个值域“男”或“女”。

③关系模型的完整性约束。关系模型中有3种数据完整性约束,它们是实体完整性约束、参照完整性约束和用户自定义完整性约束,其中前两种完整性约束由关系数据库管理系统自动支持。对于用户自定义的完整性约束,则由关系数据库管理系统提供完整性约束语言,用户利用该语言写出约束条件,运行时由系统自动检查。

● 实体完整性约束。要求关系的主键不能为空值,这是数据库完整性的最基本要求,因为主键是唯一决定元组的,如果主键为空值则其唯一性就成为不可能。例如“学生表”中,如果某元组的“学号”属性值为空,则无法说明该元组描述的是哪一个学生实体的情况。

● 参照完整性约束。是表之间相关联的基本约束,它不允许表中引用不存在的元组,即表中的外键必须是关联表中实际存在的元组,如“学生表”与“成绩表”是相互关联的,“学号”是“学生表”的主键,是“成绩表”的外键,则每个“成绩表”元组的“学号”必须在“学生表”中找得到对应的元组,否则表明某个成绩无人认领,从而产生数据冗余,这是应该避免的。即一对多关系中,多表中关联字段的值在一表中必须存在,否则Access数据库认为是非法的,不接受在多表中录入的数据。

● 用户自定义完整性约束。是针对某个具体数据库,由用户自定义的约束条件。如“成绩表”中“总评成绩”的完整性约束可定义为“在0~100之间”。这类约束应该在数据库设计时进行定义,而不应在后期使用时才加以说明。

④关系的运算。关系数据模型给出了关系操作的能力,其操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作的方式称为一次一集合的方式。关系操作可以使用两种方法定义。一种方法是基于代数的定义,称为关系代数。另一种方法是基于逻辑的定义,称为关系演算。由于使用的变量不同,关系演算又分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算在表达方法上是完全等价的。关系代数运算是通过对关系的运算来表达查询。它的运算对象是关系,运算结果也是关系。可分为两类,即集合运算(并、差、交和乘积)和关系运算(即专门针对关系数据库设计的运算:投影、选择、连接和除)。

关于代数运算符如表2-3所示。

表2-3 关系代数运算符

续表

在关系运算中,由于关系数据结构的特殊性,在关系代数中除了需要一般的集合运算外,还需要一些专门的关系运算,包括选择、投影、连接和除等。

● 选择。是在关系R中选择满足条件F的所有元组组成的一个关系。记作

σF(R)={t|t∈R∧F(t)=true}

其中,F表示选择条件,它是一个逻辑表达式,取值为“true”或“false”。逻辑表达式F的基本形式为X1θY1[фX2θY2] …。θ表示比较运算符,它可以是>、≥、<、≤、=和≠。X1、Y1是属性名或简单函数。属性名也可以用它在关系中从左到右的序号来代替。φ表示逻辑运算符,它可以是¬、∧、∨。[ ]表示任选项,即[ ]中的部分可以要也可以不要,…表示上述格式可以重复下去。选择运算是单目运算符,即运算的对象仅有一个关系。选择运算不会改变参与运算关系的关系模式,它只是根据给定的条件从所给的关系中找出符合条件的元组。实际上,选择是从行的角度进行的水平运算,是一种将大关系分割为较小关系的工具。

● 投影。是从一个关系中,选取某些属性(列),并对这些属性重新排列,最后从得出的结果中删除重复的行,从而得到一个新的关系。设R是n元关系,R在其分量,…,(m≤n;i1,i2,…,im为1到m之间的整数,可不连续)上的投影操作定义为:

即取出所有元组在特定分量 上的值。投影操作也是单目运算,它是从列的角度进行的垂直分解运算,可以改变关系中列的顺序,与选择一样也是一种分割关系的工具。

● 连接。是从两个关系的广义笛卡儿积中选取属性间满足一定条件的元组。连接又称θ连接。记作:

其中,A和B分别是R和S上个数相等且可比的属性组(名称可不相同)。AθB作为比较公式F,F的一般形式为F1∧F2∧…∧Fn,每个Fi是形为tr[Ai]θts[Bj]的公式。对于连接条件的重要限制是条件表达式中所包含的对应属性必须来自同一个属性域,否则是非法的,即属性域必须相同。若R有m个元组,此运算就是用R 的第p个元组的A属性集的各个值与S的B属性集从头至尾依次作θ比较。每当满足这一比较运算时,就把S中该属性值的元组接在R的第p个元组的右边,构成新关系的一个元组。反之,当不满足这一比较运算时就继续做S关系B属性集的下一次比较。这样,当p从1遍历到m时,就得到了新关系的全部元组。新关系的属性集 取名方法同乘积运算一样。

● 除。给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性或属性集。R中的Y和S中的Y可以有不同的属性名,但必须出自相同的域集。R÷S是满足下列条件的最大关系:其中每个元组t与S中的各个元组s组成的新元组<t,s>必在R中。定义形式为:

R÷S=πX(R)−πX((πX(R)×S)−R)={t|t∈πX(R),且∀s∈S,<t,s>∈R}

关于R、S及它们的运算关系如图2-8所示。

图2-8 关系R、S及它们的关系运算

● 关系运算实例。设有一学生数据库,里面包含有3个关系模式:学生关系S(学号,姓名,性别,年龄,系别);课程关系K(课程号,课程名);成绩关系C(学号,课程号,成绩),如图2-9所示。

图2-9 学生数据库的三张表

【例2.1】查询计算机系全体学生。

计算结果如图2-10所示。

图2-10 查询结果

图2-11 查询结果

【例2.2】查询年龄小于20岁的所有女学生。

计算结果如图2-11所示。

【例2.3】查询学生关系中都有哪些系。

π系别(S)

计算结果如图2-12所示。

【例2.4】查询选修03号课程的学生的学号。

计算结果如图2-13所示。

图2-12 查询结果

图2-13 查询结果

(4)面向对象数据模型

面向对象模型是近几年迅速崛起并得到很大发展的一种数据模型,该模型吸取了层次、网状及关系模型的优点并借鉴面向对象的设计方法,可以表达上述几种模型难以处理的许多复杂数据结构。例如,对于非传统的数据领域(CAD、多媒体等)中的嵌套递归等数据关系具有极强的表达能力。

面向对象数据模型是面向对象的概念与数据库技术相结合的产物,具有较强的灵活性、可扩充性和可重用性。应用该模型可以使数据库具有结构清晰、对象独立性好、便于维护、需求变更时程序与数据库重用率高、修改少等优点。它的动态特性描述、对象标识符、类的普化与特化、类的聚合与分解和消息功能等都比前面介绍的模型好。面向对象模型的缺点是建模过程相对较复杂。

①面向对象数据模型基本概念。

● 对象(Object)与对象标识OID(Object IDentifier)。现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个唯一的标识,称为对象标识(OID)。

OID与关系数据库中码(Key)的概念和某些关系系统中支持的记录标识(RID)、元组标识(TID)是有本质区别的。OID是独立于值的、系统全局唯一的。

● 封装(Encapsulation)。每一个对象是其状态与行为的封装,其中状态是该对象一系列属性(Attribute)值的集合,而行为是在对象状态上操作的集合,操作也称为方法(Method)。

● 类(Class)。共享同样属性和方法集的所有对象构成了一个对象类(简称类),一个对象是某一类的一个实例(Instance)。例如,学生是一个类,李枫、张晨、杨敏等是学生类中的对象。在数据库系统中,要注意区分“型”和“值”的概念。在OODB中,类是“型”,对象是某一类的一个“值”。类属性的定义域可以是任何类,即可以是基本类,如整数、字符串、布尔型,也可以是包含属性和方法的一般类。特别地,一个类的某一属性的定义也可是这个类自身。

● 类层次(结构)。在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类C1称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。

一个子类可以有多个超类,有的是直接的,有的是间接的。例如,C2是C3的直接超类,C1是C3的间接超类。一个类可以继承类层次中其直接或间接超类的属性和方法。

● 消息(Message)。由于对象是封装的,对象与外部的通信一般只能通过消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。

②对象结构与标识。

● 对象结构。对象是由一组数据结构和在这组数据结构上的操作程序所封装起来的基本单位,对象之间的联系是通过一组消息来定义的,包括如下内容:

属性集合。属性描述对象的状态、组成和特性,所有属性的集合构成对象数据的数据结构。对象可以嵌套以组成复杂的对象。

方法集合。方法描述对象的行为特性,包括方法的接口(方法调用的说明)和方法的实现(对象操作的算法)。

消息集合。对象之间操作请求的集合。

● 对象标识。在面向对象数据库中每个对象有唯一的、不变的标识,对象中的属性、方法会随时间变化,但对象的标识始终不变。对象标识主要有如下几种:

值标识。用值表示的标识。例如,关系数据库中元组的码。

名标识。用名字表示的标识。例如,变量的名字。

内标识。在建立数据模型或程序设计语言中,无须用户给出,而常由系统给出,类似数据库中的DBK。在面向对象数据库中,大多是内标识。

● 封装。每个对象是其状态与行为的封装。封装是对象外部界面与内部实现之间实行清晰隔离的一种抽象,外部与对象的通信只能通过消息来实现。

面向对象的数据库系统在逻辑上和物理上将面向元组的处理上升为面向对象、面向对象具有复杂结构的逻辑整体。允许使用自然的方法,并结合数据抽象的机制在结构和行为上对复杂的对象建立模型,从而提高管理效率,降低用户使用的复杂性,并且为版本管理、动态模式修改等功能的实现创造了条件。

③类结构与继承。在面向对象的数据库中,相似对象的集合称为类。每个对象成为所在类的实例。一个类中的对象共享一个定义,相互之间的区别仅在于属性的取值不同。类的概念与关系模式类似,表2-4列出了对照关系。

表2-4  类与关系模式的对照

类本身也可以看作一个对象,称为类对象,面向对象数据库模式是类的集合,在一个面向对象数据库模式中,会存在多个相似但又有所不同的类。因此面向对象数据模式提供了类层次结构,以实现这些要求。

● 类的层次结构。在面向对象数据模式中,一组类可以形成一个类层次。一个面向对象数据模式可能有多个类层次。在一个类层次中,一个类继承其所有超类的属性、方法和消息。图2-14表示在学校数据库中“学生”类的层次结构。

图2-14 “学生”类的层次结构

作为最高一级的类(学生),具有所有学生应具备的属性、方法和消息。作为超类的下一级子类(研究生、本科生、专科生),除继承其超类的属性、方法和消息外,还各自具备其所在子类的属性、方法和消息,还各自具备其所在子类的属性、方法和消息,依此类推,超类与子类反映“从属(ISA)”关系,子类与子类之间既有共同之处,又相互有所区别。超类是子类的抽象,子类是超类的具体化。

类层次可以动态扩展,一个新的子类可以从一个或多个已有的类导出。根据一个类能否继承多个超类的特性将继承分成单继承和多重继承。

● 继承。在面向对象模式中,继承分为单继承和多重继承。

单继承:一个子类只能继承一个超类的特性。

多重继承:一个子类能够继承多个超类的特性。

图2-14的实例就是单继承的层次结构,在图2-15的层次结构中,“在职研究生”既是教职工也是学生,因此“在职研究生”继承了“教职工”和“学生”的全部特性(包括属性、方法和消息),所以是多重继承的层次结构。

图2-15 多重继承的层次结构

继承性的特点是由于子类继承了超类的特性,可以避免许多重复定义。然而由于子类除继承超类的特性外还需要定义自己的特性,这时可能与从超类继承的特性(包括属性、方法和消息)发生冲突,这种冲突可能发生在子类与超类之间,也可能发生在子类的多个直接超类之间。这类冲突一般由系统解决,解决方法是制定优先级别规则,一般在子类与超类之间规定子类优先的规则,在子类的多个直接超类之间规定有限次序,按照这种次序定义继承规则。

子类对其直接超类(也称父类)既有继承也有发展,继承的部分就是重用的部分。

● 对象的嵌套。在面向对象数据库模式中,对象的属性不仅可以是单值或多值,还可以是一个对象,这就是对象的嵌套关系。如果对象B是对象A的某个属性,则称A是复合对象,B是A的子对象。

对象的嵌套关系为用户提供了从不同的粒度观察数据库的方法。所谓粒度,就是数据库中数据细节的详细程度,细节越详细粒度越高。

例如,在计算机的属性中,主机、光驱、硬盘等不是标准数据类型,而是对象,它们又包含若干属性,这些属性中有些还是对象,形成对象的嵌套结构。但是对于不同的使用者来说,他们所关心的层次是不同的,这就形成了不同的观察粒度。

对象的嵌套结构和类层次结构构成了更加复杂的数据关系,因此面向对象数据库模式是对关系数据模型的推广和发展,因而也更能准确地描述现实世界的信息结构,所以面向对象数据库模式反映了数据库技术在新的应用领域的发展。

3.物理模型

物理模型是建模的最后一个阶段,它是一种面向计算机物理表示的模型,此模型给出了数据在计算机上的物理表示,决定着数据库在物理设备上的存储结构与存取方法。物理模型建模的主要目的是为逻辑模型选取一个最适合应用要求的物理结构,以提高数据库访问速度及有效利用存储空间,它依赖于给定的计算机系统。

物理模型往往与具体的数据管理系统紧密相关。在现代关系数据库中已大量屏蔽了内部物理结构,因此留给用户参与物理设计的余地并不多,一般的关系数据库管理系统中留给用户参与物理模型设计的内容大致有索引设计、急簇设计和分区设计3种。

在数据库建模过程中,同一个概念会不断演化,其内涵和外延也会有所不同,在3种数据模型中,常用基本概念对应关系如表2-5所示。

表2-5 数据模型中的概念对照表