第三章 数据库的逻辑结构与物理结构设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章数据库的逻辑结构与物理结构设计数据库的逻辑结构设计的主要任务是把概念层数据模型转换为组织层数据模型,即根据数据库的概念结构导出特定的数据库管理系统可以处理的数据库的逻辑结构。与数据库的逻辑结构相对应,本章我们称组织层的数据模型为逻辑模型。数据库的物理结构设计的主要任务是为逻辑模型选取一个最适合应用要求的物理结构。
本章主要介绍以下内容:
•逻辑模型
•关系模型
•关系规范化
•逻辑结构设计的任务
•数据库的物理结构设计
第一节逻辑模型
概念模型经过转换成为逻辑模型(也称为结构数据模型、组织层数据模型,常简称为数据模型)。它直接面向数据库的逻辑结构,直接与DBMS有关。
一、主要的逻辑模型
目前,数据库领域中主要的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。
1. 层次模型
层次模型(Hierarchical Model)是按照层次结构的形式组织数据库数据的数据模型,是数据库中使用较早的一种数据模型,其典型代表是IBM公司研制的、曾经被广泛使用的第一个大型商用数据库信息管理系统IMS(Information Management System)。
(1)数据结构。层次模型使用树形结构表示实体及实体间的联系。层次模型的基本特点是:有且只有一个结点没有父结点,这个结点称为根结点;根以外的其他结点有且只有一个父结点。
在层次模型中,树的结点是记录类型。上一层记录类型和下一层记录类型之间的联系是1:n的,用结点之间的连线表示。这种联系是父子之间的一对多联系。层次模型如图3-1所示。在层次模型数据库中查找记录,必须指定存取路径,即从根结点开始沿途所经过的路程。
在层次模型中,同一父结点的子结点称为兄弟结点,没有子结点的结点称为叶结点。如果要存取某一记录类型的记录,可以从根结点开始,按照有向树层次逐层向下查找,查找路径就是存取路径。任何一个给定的记录值只有按其路径查看时,才能显示其全部意义,没有一个记录值能够脱离父记录而独立存在。除根节点外,任何结点的父结点都是唯一的,因此只要知道每个结点的父结点,就可以知道整个模型的整体结构。
2. 网状模型
网状模型的典型代表是DBTG系统,亦称CODASYL系统。这是20世纪70年代数据系统语言研究会(Conference on Data System Language, 简称CODASYL)下属的数据库任务组(Data Base Task Group,简称DBTG)提出的一个系统方案。DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、方法和技术具有普遍意义,对于网状数据库系统的研制和发展起了重大的影响。
(1)数据结构。网状模型是用网状结构表示实体及其之间联系的模型。网状模型的特点如下:可以有一个以上结点无父结点;至少有一个结点有一个以上父结点。网状模型和层次模型在本质上是一样的,它们都是基本层次联系的集合。网状模型结点之间的联系不受层次的限制,可以任意发生联系,所以它的结构是结点的连通图,如图3-2所示。
3. 关系模型
关系模型是目前最重要、应用最广泛的一种数据模型。现在主流的数据库系统大都是基
于关系模型的关系数据库系统(Relational Database System)。关系模型是由美国IBM公司San Jose研究室的研究员E.F.Codd于1970年首次提出的。20世纪80年代以来,计算机新推出的DBMS几乎都支持关系模型。
(1)数据结构。在关系数据模型中,把二维表格称为关系,表中的列称为属性,属性的取值范围称为域,表中的一行称为一个元组,元组用关键字标识。关系模型是由若干关系模式组成的集合。在关系模型中用二维表表示实体集及其属性,用二维表描述实体集间的联系。
(2)关系模型的优缺点。关系模型的优缺点如表3-3所示。
表3-3关系数据模型的优缺点
关系模型自诞生以后发展迅速,深受用户的喜爱。而计算机硬件的飞速发展,更大容量、更高速度的计算机在一定程度上弥补了关系数据模型的缺点。因而,关系数据库始终保持其主流库的地位。本书后面章节所介绍的内容主要讲解关系数据库。
4. 面向对象模型
面向对象的概念最早出现在程序设计语言中,20世纪70年代末、80年代初开始提出了面向对象的数据模型(Object-Oriented Data Model),面向对象模型是面向对象概念与数据库技术相结合的产物,用以支持非传统应用领域对数据模型提出的新需求。它的基本目标是以更接近人类思维的方式描述客观世界的事物及其联系,且使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致,以便对客观实体进行结构模拟和行为模拟。
面向对象模型的基本概念有:对象、类、消息与封装、继承。
(1)对象(Object):对象是现实世界中的实体的模型化。现实世界中的任一实体都可模型化为一个对象,每一个对象都有唯一的对象标识,把状态和行为封装在一起。
对象由状态和行为两部分组成,对象的状态是对象属性的集合。属性是用来描述对象的状态、组成及特性,属性既可以是一些简单的数据类型,也可以是一个对象,即对象可以嵌套。对象的行为是在对象状态上操作的方法的集合。方法用来描述对象的行为方式。方法的定义一般分为接口说明和实现两部分,接口说明与子程序的接口说明类似,用以说明方法的名称、参数和结果返回值的类型等。方法的实现是一段程序代码,用以实现方法的功能。
(2)类(Class):具有相同属性集和方法集的所有对象构成一个类。任一个对象是某一类的一个实例。类可以由用户自定义,也可以从其他类派生出来,称为子类,原来的类称为
超类(或父类),一个子类可以有多个超类,有的是直接的,也有的是间接的。超类和子类构成层次结构关系,称为类层次。如图3-3所示,研究生、本科生及专科生都是学生类的子类,博士研究生、硕士研究生是研究生的子类,学生和研究生是博士研究生及硕士研究生的超类,其中研究生是直接超类。
(3)消息(Message)与封装(Encapsulation):由于每个对象是其状态与行为的封装,一个对象不能直接访问或改变另一对象的内部状态(属性)和行为(方法)。对象与外部的通信只能借助于消息,消息从外部传递给对象,调用对象的相应方法,执行相应的操作,再以消息的形式返回操作的结果,这是面向对象模型的主要特征之一。封装使方法的接口和实现分开,有利于数据的独立性,同时封装使对象只接受对象中所定义的操作,有利于提高程序的可靠性。
(4)继承(
继承是
模工具,能以人类思维规律对现实世界提供一种简明准确的描述,同时也有利于软件的重用。
面向对象模型由于语义丰富,表达自然,因此面向对象数据库作为新一代数据库,在一些新的应用领域如CAD、CAM、CASE等得到了广泛重视和发展。
二、逻辑模型的三要素
逻辑模型是一种形式化的数据描述、数据间联系以及有关语义约束规则的方法。数据库专家E.F.Codd认为:一个基本数据模型是一组向用户提供的规则,这些规则规定逻辑结构如何组织以及允许进行何种操作。通常一个数据库的逻辑模型由数据结构、数据操作和数据的约束条件三部分组成,这三部分又称为逻辑模型的三要素。
1. 数据结构
数据结构用于描述数据库系统的静态特性,是逻辑模型最基本的组成部分,规定了如何把基本的数据项组织成较大的数据单位,以描述数据的类型、内容、性质和数据之间的相互关系。
通常,在数据库系统中按照数据结构的类型来命名逻辑模型。例如,层次型数据结构、网状型数据结构和关系型数据结构的逻辑模型分别称为层次模型、网状模型和关系模型。数据结构是刻画一个逻辑模型性质最重要的方面。
2. 数据操作
数据操作用于描述数据库系统的动态特性,是指一组用于指定数据结构的任何有效的操作或推导规则。数据库中主要的操作有查询和更新两大类。逻辑模型必须定义这些操作的确切含义、操作符号、操作规则以及实现操作的数据库语言。