第04章 关系系统及其查询优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章关系系统及其查询优化
4.1 关系系统
关系模型的三个基本要素:关系数据结构、关系的完整性、关系操作。
4.1.1 关系系统的定义
一、定义
满足以下两个条件的系统称为关系系统:
①具有关系数据结构;
②具有选择、投影、自然连接运算,且这些运算不依赖于物理存取路径。
二、解释
①为什么关系系统除了要支持关系数据结构外,还必须支持选择、投影、连接运算呢?
因为不支持这三种关系运算的系统,用户使用仍不方便,不能提高用户的生产率,而提高用户生产率正是关系系统主要目标之一。
②为什么要求这三种运算不能依赖于物理存取路径呢?
因为依赖物理存取路径来实现关系运算就降低或丧失了数据的物理独立性。不依赖物理存取路径来实现关系运算就要求关系系统自动地选择路径。为此,系统要进行查询优化,以获得较好的性能。这正是关系系统实施的关键技术。
③为什么要求关系系统支持这三种最主要的运算而不是关系代数的全部运算功能?
因为它们是最有用的运算功能,能解决绝大部分的实际回题。
4.1.2 关系系统的分类
有了关系系统的定义,我们就可以根据它来区分哪些是真正的关系系统。
4.1.1定义的关系系统是关系系统的最小要求,许多实际系统,如Oracle、SQL Server、DB2、SyBase、Informix系统都不同程度地超过了这些要求。
按照E.F.Codd的思想,可以把关系系统分类如图4.1所示的四类系统。
图 4.1 关系系统的分类
说明:
①图中的圆表示关系数据模型。每个圆分为三部分,分别表示关系模型的三个组成部分:数据结构S(Structure),完整性I(Integrity),数据操纵M(Manipulation)。
②图中阴影部分表示各类系统支持模型的程度。
一、表式系统
仅支持关系(即表)数据结构,不支持关系(即集合)操作。
二、(最小)关系系统
仅支持关系数据结构和三种关系搡作。即4.1.l中定义的关系系统。许多微机关系数据库系统如FoxBASE、FoxPro等就属于这一类。
三、关系完备的系统
这类系统支持关系数据结构和所有的关系代数操作(功能上与关系代数等价)。
四、全关系系统
这类系统支持关系模型的所有特征。即不仅是关系上完备的而且支持数据结构中域的概念,支持实体完整性和参照完整性。目前,大多数关系系统已不同程度上接近或达到了这个目标。
4.1.3 全关系系统的十二条基本准则
关系模型的奠基人E.F.Codd博士具体地给出了全关系型的关系系统应遵循的十二条基本准则。从实际意义上看,这十二条准则可以作为评价或购买关系型产品的标准。从理论意义上看,它是对关系数据模型的具体而又深入的论述,是从理论和实际紧密结合的高度对关系型DBMS的评述。
准则0:一个关系型的DBMS必须能完全通过它的关系能力来管理数据库准则0是下面十二条准则的基础。
准则0的第一个推论是:任何声称是关系型的DBMS必须在关系这个级别上支持数据的插入、修改和删除(即一次可以对多个记录进行操作)。不管一个系统是否还具有非关系的管理数据的能力,它必须满足准则0。任何不满足准则0的DBMS不配称为关系型DBMS。
准则0的第二个推论是:关系型DBMS必须遵循信息准则和保证访问(存取)准则。
准则1:信息准则——关系型DBMS的所有信息都应在逻辑一级上用一种方法(即表的值)显式地表示
表名、列名和域名等都用系统内部表(即数据字典表)中的值表示。数据字典本身是一个动态的用来描述元数据的关系数据库。
满足信息准则不仅为了提高用户的生产率,使得DBA维护数据库的工作更简单、更有效,而且也为了使软件开发商在开发应用软件时能够检索存储在数据字典中的信息,需要的话可以借助DBMS的操作把新的信息存入字典中,简便合理。
如:SQL Server对每一个用户数据库都建立了一个sysobjects表,表中保存了各类数据对象,如:数据表、视图、存储过程、关键字等。
图4.2 用数据表保存各类数据对象
又如:SQL Server对每一个用户数据库都建立了一个syscolumns表,表中保存了所有数据表的属性列定义。
图4.3 用数据表保存所有数据表的属性列定义
准则2:保证访问准则——依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项
保证访问准则表明关系系统所采用的是关联寻址(association addressing)的访问模式,而不是那种面向机器的寻址方法。这是关系系统独有的方式。
准则3:空值的系统化处理
全关系型的DBMS应支持空值的概念,并用系统化的方式处理空值。
准则4:基于关系模型的动态的联机数据字典
数据库的描述在逻辑级上应该和普通数据采用同样的表示方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息。参见图4.2和图4.3。
准则5:统一的数据子语言准则
一个关系系统必须有一种语言,如SQL语言,它的语句可以表示为具有严格语法规定的字符串,并能全面地支持以下功能:
·数据定义、视图定义
·数据操作(交互式或程序式)
·完整性约束
·授权
·事务处理功能(事务开始、提交、回滚)
准则6:视图更新准则
所有理论上可更新的视图也应该允许由系统更新。即:可以通过更新视图来达到更新相关的数据表。
理论上可更新的视图——指对此视图的更新要求,存在一个与时间无关的算法,该算法可以无二义性地把更新要求转换为对基本表的更新序列。
如:含有表达式列的视图,通过更新表达式的值,就不能更新基本表。该视图就是一个理论上不可更新的视图。
准则7:高级的插入、修改和删除操作
关系系统的操作对象是单一的关系。以关系为操作对象不仅简化了用户查询,提高了用户生产率,而且也为系统提供了很大的余地来进行查询优化,提高了系统的运行效率。它允许系统来选择存取路径,以便得到最有效的运行代码。
准则8:数据物理独立性
无论数据库的数据在存储表示或存取方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性。即应用程序仅涉及逻辑方面。
准则9:数据逻辑独立性
当对基本关系进行理论上信息不受损害的任何变化时,应用程序和终端活动都保持逻辑上的不变性。
理论上保持信息不受损害的变化——举例说明:把一个基本表按行的内容或者按列名分解为两个表,若这两个表都保留原基本表的主码,则这种变换在理论上是保持信息不受损失的。如果删除了某个基本表的一个或多个属性列,就是受损害的变化。
为了尽可能提高数据逻辑独立性,DBMS必须能对理论上可更新的视图执行插入、修改和删除操作时,必须满足准则6。