数据库的逻辑结构与物理结构设计

上传人:积*** 文档编号:123594518 上传时间:2022-07-22 格式:DOC 页数:29 大小:540KB
收藏 版权申诉 举报 下载
数据库的逻辑结构与物理结构设计_第1页
第1页 / 共29页
数据库的逻辑结构与物理结构设计_第2页
第2页 / 共29页
数据库的逻辑结构与物理结构设计_第3页
第3页 / 共29页
资源描述:

《数据库的逻辑结构与物理结构设计》由会员分享,可在线阅读,更多相关《数据库的逻辑结构与物理结构设计(29页珍藏版)》请在装配图网上搜索。

1、第三章 数据库的逻辑构造与物理构造设计数据库的逻辑构造设计的重要任务是把概念层数据模型转换为组织层数据模型,即根据数据库的概念构造导出特定的数据库管理系统可以解决的数据库的逻辑构造。与数据库的逻辑构造相相应,本章我们称组织层的数据模型为逻辑模型。数据库的物理构造设计的重要任务是为逻辑模型选用一种最适合应用规定的物理构造。本章重要简介如下内容: 逻辑模型 关系模型 关系规范化 逻辑构造设计的任务 数据库的物理构造设计第一节 逻辑模型概念模型通过转换成为逻辑模型(也称为构造数据模型、组织层数据模型,常简称为数据模型)。它直接面向数据库的逻辑构造,直接与DBMS有关。一、重要的逻辑模型目前,数据库领

2、域中重要的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。1. 层次模型层次模型(Hierarchical Model)是按照层次构造的形式组织数据库数据的数据模型,是数据库中使用较早的一种数据模型,其典型代表是IBM公司研制的、曾经被广泛使用的第一种大型商用数据库信息管理系统IMS(Information Management System)。(1)数据构造。层次模型使用树形构造表达实体及实体间的联系。层次模型的基本特点是:有且只有一种结点没有父结点,这个结点称为根结点;根以外的其她结点有且只有一种父结点。在层次模型中,树的结点是记录类型。上一层记录类型和下一层记录类型之间的联系是1

3、:n的,用结点之间的连线表达。这种联系是父子之间的一对多联系。层次模型如图3-1所示。在层次模型数据库中查找记录,必须指定存取途径,即从根结点开始沿途所通过的路程。在层次模型中,同一父结点的子结点称为兄弟结点,没有子结点的结点称为叶结点。如果要存取某一记录类型的记录,可以从根结点开始,按照有向树层次逐级向下查找,查找途径就是存取途径。任何一种给定的记录值只有按其途径查看时,才干显示其所故意义,没有一种记录值可以脱离父记录而独立存在。除根节点外,任何结点的父结点都是唯一的,因此只要懂得每个结点的父结点,就可以懂得整个模型的整体构造。R1R2R3R4R5图3-1 层次模型示例(2)层次模型的优缺陷

4、。层次模型的优缺陷,如表3-1所示。表3-1层次模型的优缺陷内容长处(1) 层次模型构造简朴、层次分明,便于在计算机内实现。在层次数据构造中,从根结点到树中任一结点均存在一条唯一的层次途径,为有效地进行数据操纵提供条件(2) 由于层次构造规定除根结点外所有结点有且仅有一种父结点,故实体集之间的联系可用父结点唯一地表达,并且层次模型中总是从父记录指向子记录,因此记录类型之间的联系名可省略(3) 由于实体集间的联系固定,因此层次模型DBMS对层次构造的数据有较高的解决效率(4) 层次数据模型提供了良好的完整性支持缺陷(1) 层次数据模型缺少直接体现现实世界中非层次关系实体集间的复杂联系能力(2)

5、对插入或删除操作有较多的限制(3) 查询子结点必须通过父结点2. 网状模型网状模型的典型代表是DBTG系统,亦称CODASYL系统。这是20世纪70年代数据系统语言研究会(Conference on Data System Language, 简称CODASYL)下属的数据库任务组(Data Base Task Group,简称DBTG)提出的一种系统方案。DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、措施和技术具有普遍意义,对于网状数据库系统的研制和发展起了重大的影响。(1)数据构造。网状模型是用网状构造表达实体及其之间联系的模型。网状模型的特点如下:可以有一种以上结点无父结点;

6、至少有一种结点有一种以上父结点。网状模型和层次模型在本质上是同样的,它们都是基本层次联系的集合。网状模型结点之间的联系不受层次的限制,可以任意发生联系,因此它的构造是结点的连通图,如图3-2所示。ABCD图3-2网状数据模型(2)网状模型的优缺陷。网状模型的优缺陷如表3-2所示。表3-2网状模型的优缺陷内容长处(1) 能更为直接描述现实世界(2) 具有存取效率高等良好性能缺陷(1) 数据构造比较复杂,并且随着应用环境的扩大,数据库构造变得更加复杂,不便于终端顾客掌握(2) 由于记录之间联系是通过存取途径实现的,应用程序在访问数据时必须选择合适的存取途径,因此,顾客必须理解系统构造的细节,加重了

7、编写应用程序的承当3. 关系模型关系模型是目前最重要、应用最广泛的一种数据模型。目前主流的数据库系统大都是基于关系模型的关系数据库系统(Relational Database System)。关系模型是由美国IBM公司San Jose研究室的研究员E.F.Codd于1970年初次提出的。20世纪80年代以来,计算机新推出的DBMS几乎都支持关系模型。(1)数据构造。在关系数据模型中,把二维表格称为关系,表中的列称为属性,属性的取值范畴称为域,表中的一行称为一种元组,元组用核心字标记。关系模型是由若干关系模式构成的集合。在关系模型中用二维表表达实体集及其属性,用二维表描述实体集间的联系。(2)关

8、系模型的优缺陷。关系模型的优缺陷如表3-3所示。表3-3关系数据模型的优缺陷内容长处(1)关系模型建立在严格的数学基本之上(2)关系模型的概念单一,容易理解(3)关系模型的存取途径对顾客透明缺陷(1)关系模型中的数据联系是靠数据冗余实现的,其查询效率往往不如非关系模型,必须进行优化,以提高性能(2)关系模型在解决如计算机辅助设计数据、多媒体数据时就有了局限性,必须要和其她的新技术结合关系模型自诞生后来发展迅速,深受顾客的爱慕。而计算机硬件的飞速发展,更大容量、更高速度的计算机在一定限度上弥补了关系数据模型的缺陷。因而,关系数据库始终保持其主流库的地位。本书背面章节所简介的内容重要解说关系数据库

9、。4. 面向对象模型面向对象的概念最早出目前程序设计语言中,20世纪70年代末、80年代初开始提出了面向对象的数据模型(ObjectOriented Data Model),面向对象模型是面向对象概念与数据库技术相结合的产物,用以支持非老式应用领域对数据模型提出的新需求。它的基本目的是以更接近人类思维的方式描述客观世界的事物及其联系,且使描述问题的问题空间和解决问题的措施空间在构造上尽量一致,以便对客观实体进行构造模拟和行为模拟。面向对象模型的基本概念有:对象、类、消息与封装、继承。(1)对象(Object):对象是现实世界中的实体的模型化。现实世界中的任一实体都可模型化为一种对象,每一种对象

10、均有唯一的对象标记,把状态和行为封装在一起。对象由状态和行为两部分构成,对象的状态是对象属性的集合。属性是用来描述对象的状态、构成及特性,属性既可以是某些简朴的数据类型,也可以是一种对象,即对象可以嵌套。对象的行为是在对象状态上操作的措施的集合。措施用来描述对象的行为方式。措施的定义一般分为接口阐明和实现两部分,接口阐明与子程序的接口阐明类似,用以阐明措施的名称、参数和成果返回值的类型等。措施的实现是一段程序代码,用以实现措施的功能。(2)类(Class):具有相似属性集和措施集的所有对象构成一种类。任一种对象是某一类的一种实例。类可以由顾客自定义,也可以从其她类派生出来,称为子类,本来的类称

11、为超类(或父类),一种子类可以有多种超类,有的是直接的,也有的是间接的。超类和子类构成层次构造关系,称为类层次。如图3-3所示,研究生、本科生及专科生都是学生类的子类,博士研究生、研究生研究生是研究生的子类,学生和研究生是博士研究生及研究生研究生的超类,其中研究生是直接超类。(3)消息(Message)与封装(Encapsulation):由于每个对象是其状态与行为的封装,一种对象不能直接访问或变化另一对象的内部状态(属性)和行为(措施)。对象与外部的通信只能借助于消息,消息从外部传递给对象,调用对象的相应措施,执行相应的操作,再以消息的形式返回操作的成果,这是面向对象模型的重要特性之一。封装

12、使措施的接口和实现分开,有助于数据的独立性,同步封装使对象只接受对象中所定义的操作,有助于提高程序的可靠性。博士研究生学生研究生研究生本科生研究生专科生图3-3类层次(4)继承(Inheritance):子类可以继承其所有超类中的属性和措施,同步子类还要定义自己的属性和措施。如图3-3所示的研究生研究生继承了研究生的所有属性和措施。继承是面向对象模型中避免反复定义的机制之一,大大减少了信息冗余,并且作为一种强有力的建模工具,能以人类思维规律对现实世界提供一种简要精确的描述,同步也有助于软件的重用。面向对象模型由于语义丰富,体现自然,因此面向对象数据库作为新一代数据库,在某些新的应用领域如CAD

13、、CAM、CASE等得到了广泛注重和发展。二、逻辑模型的三要素逻辑模型是一种形式化的数据描述、数据间联系以及有关语义约束规则的措施。数据库专家E.F.Codd觉得:一种基本数据模型是一组向顾客提供的规则,这些规则规定逻辑构造如何组织以及容许进行何种操作。一般一种数据库的逻辑模型由数据构造、数据操作和数据的约束条件三部分构成,这三部分又称为逻辑模型的三要素。1. 数据构造数据构造用于描述数据库系统的静态特性,是逻辑模型最基本的构成部分,规定了如何把基本的数据项组织成较大的数据单位,以描述数据的类型、内容、性质和数据之间的互相关系。一般,在数据库系统中按照数据构造的类型来命名逻辑模型。例如,层次型

14、数据构造、网状型数据构造和关系型数据构造的逻辑模型分别称为层次模型、网状模型和关系模型。数据构造是刻画一种逻辑模型性质最重要的方面。2. 数据操作数据操作用于描述数据库系统的动态特性,是指一组用于指定数据构造的任何有效的操作或推导规则。数据库中重要的操作有查询和更新两大类。逻辑模型必须定义这些操作的确切含义、操作符号、操作规则以及实现操作的数据库语言。3. 数据的约束条件数据的约束条件是一组完整性规则的集合,它定义了给定逻辑模型中数据及其联系所具有的制约和依存规则,用以限定相容的数据库状态的集合和可容许的状态变化,以保证数据库中数据的对的性、有效性和相容性。完整性约束的定义对逻辑模型的动态特性

15、做了进一步的描述与限定。由于在某些状况下,若只限定使用的数据构造及可在该构造上执行的操作,仍然不能保证数据的对的性、有效性和相容性。为此,每种数据模型都规定有通用和特殊的完整性约束条件。例如,关系模型中通用的约束规则是实体完整性和引用完整性。特殊的约束规则是顾客定义的完整性。第二节 关系模型 由于关系模型是目前最重要、应用最广泛的一种数据模型,并且目前大多数数据库系统都是基于关系模型的关系数据库系统,因此本节具体讨论关系模型。一、关系模型的数据构造关系模型是以集合论中的关系概念为基本发展起来的数据模型。在关系模型中,基本元素涉及关系、关系模式、属性、元组、域、核心字以及关系实例等。1关系一种对

16、象可以用一种或多种关系来描述。关系就是定义在它的所有属性域上的多元关系。设关系为R,它有属性,其相应的域分别为,则关系R可表达为:或。上式是关系的描述,是属性名,R的值用r或r(R)表达,n是R的属性的个数,称为关系的目。从形式上看,关系相称于一种二维表(Table),如表3-4所示的学生信息表就是一种关系,可表达为:学生(学号,姓名,性别,出生年份,入年份,班级号)。表3-4学生信息表学号姓名性别出生年份入年份班级号040123赵铁男198604777040234李芳女198604777050126高明男198705111050125刘菲女198705111关系可以有三种类型:基本关系(又称

17、为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表达。查询表是查询成果相应的表。视图表是由基本表或其他视图表导出的表,是虚表,不相应实际存储的数据。关系要满足如下四个条件:(1)关系中的每一列都是不可再分的基本属性。如表3-4所示的关系就满足这个条件。但如果将出生年份改为出生日期,出生日期下面再分出年、月、日三个子属性,则出生日期就不是基本属性,相应的关系就不满足这个条件。(2)表中各属性不能重名。(3)表中任意两个元组不能完全相似。(4)表中的行、列顺序无关紧要,可以任意互换。2关系模式关系数据库就是支持关系模型的数据库系统。因此它以二维表形式来组织数据,由型和

18、值两部分构成,关系模式是型,关系是值。关系模式是对关系的描述或定义,涉及关系名、属性、属性相应的域集合、属性到域的映射以及属性之间数据的依赖关系。记为。其中R为关系名,U为该属性的集合,即;D为域的集合,即属性取值范畴的集合;dom为属性集U到D的映射,即属性与域之间的相应关系;F为属性集U上的数据依赖关系。一般,域的定义和映射直接阐明为属性的类型和长度,而数据依赖关系将在第三节简介,因此,一般把关系模式简化为R(U)。关系模式和关系是型和值的关系。一种关系模式可以相应多种关系,但在某一特定的时刻关系模式总有一种关系与之相应,即关系是关系模式在某一时刻的状态或内容。一般说来,关系模式是相对稳定

19、的,而关系的值是相对变化的。但在诸多状况下,人们一般把关系模式和关系统称为关系。当讨论数据库时,必须辨别关系模式和关系实例的概念。关系模式是一种逻辑设计,涉及了关系名和关系的属性,相对比较稳定。而关系实例是给定的关系模式中数据的快照,相对来说常常发生变化。在关系模型中,数据库设计涉及了一种或多种关系模式。关系数据库模式是关系模式的集合,简称数据库模式。例如,在学生数据库中,若涉及了三个关系模式Student, Class, Grade,那么这三个关系模式的设计集合称为数据库模式。该数据库模式的设计过程如图3-4所示。关系模式Student关系模式Class关系模式Grade设计关系数据库模式图

20、3-4数据库模式设计过程3、属性二维表中的列(Column)称为属性(Attribute),列中的值取自相应的域(Domain),域是属性所有也许取值的集合。虽然关系数据模型采用了数学中关系的概念,但两者还是有些差别。在数学中,元组中的值是有序的,而在关系模型中对属性的顺序是不作规定的,例如和两种表达是等价的。4、元组表中的一行(Row)称为一种元组(Tuple)。元组就是关系中的数据,元组的各分量分别相应于关系中的各个属性。当需要表达关系中的一种元组时,一般是把一种元组的各个分量按照属性的原则排列顺序列表在一种圆括号内,分量之间使用逗号分开。如表3-4中的元组可表达为:(050125,刘菲,

21、女,1987,05111)。5、键(Key)(1)候选键(Candidate key):如果关系的某一属性或属性组的值唯一地决定其她所有属性的值,即唯一地决定一种元组,而其任何真子集无此性质,则这个属性或属性组称为关系的候选键,或简称为键。在简朴状况下,候选键只涉及一种属性,而在极端状况下,候选键涉及关系中的所有属性,称为全键(All-key)。(2)主键(Primary Key):从侯选键中选定一种为主键(Prime Key)。主键也称为核心字(Keyword),用来辨认和辨别元组,它应当是唯一的,即每个元组的主键的值是不能相似的。在关系模式中,常在主键的属性下加下划线,以标出主键。涉及在主

22、键中的属性称为主属性(Prime Attribute)。未涉及在任何候选键中的属性称为非主属性。例如在学生(学号,姓名,性别,出生年份,入年份,班级号)关系中,学号是唯一的候选键,固然也是主键。因此学号是主属性。而姓名、性别等都是非主属性。(3)外键(Foreign Key):如果关系中的属性或属性组不是本关系的键,而是引用其她关系的键,则称为此关系的外键。外键提供了表达实体之间联系的手段。当两个实体集之间存在一对多联系时,一般取一方关系中的键作为多方关系的外键。对于多对多联系,可从每个关系取一种键构成一种新的关系,用这种新关系表达多对多联系,这时外键为所在关系的主属性。例如,除学生关系外,再

23、定义两个关系:课程(课程号,课程名,学分,开学时间,先修课程号),选课(学号,课程号,成绩)。从语义可知,课程号是课程的主键,学号,课程号是选课的主键,同步学号与课程号也是选课的两个外键。二、关系模型的数据操作关系模型中数据操作的特点是集合操作方式。即操作的对象和成果都是集合。这种操作方式也称为一次一种集合的方式。关系模型中常用的数据操作涉及查询操作和更新操作两大部分。查询操作有选择、投影、连接、除、并、交、差等;更新操作有插入、删除和修改。查询操作是关系模型中数据操作的重要内容。关系模型中的关系操纵能力初期一般是用代数措施或逻辑措施来表达,分别称为关系代数(Relation Algebra)

24、和关系演算(Relation Calculus)。关系代数是用对关系的运算来体现查询规定的方式。关系操作的成果仍为关系,可以再参与其她关系操作,由此可以构成对关系的多种复杂操作。关系演算用谓词来体现查询规定的方式。关系代数与关系演算均是抽象的查询语言,与具体的DBMS中实现的实际语言并不完全同样,它们可用作评估实际系统中查询语言能力的原则或基本。除了关系代数与关系演算外,尚有一种介于两者之间的SQL语言,该语言将在第四章简介,这里仅简介关系代数。关系代数的运算可分为两类:一类是基本运算,即老式的集合运算;另一类是专门运算,即专门针对关系数据库设计的运算。1老式的集合运算。老式的集合运算涉及并、

25、差、交、笛卡尔积4种基本运算。(1)并(Union):设关系和是同一关系模式下的关系,则和的并是由属于或属于的元组构成的集合。记作。(2)差(Difference):设关系和是同一关系模式下的关系,则和的差是由属于但不属于的元组构成的集合。记作。(3)交(Intersection):设关系和是同一关系模式下的关系,则和的并是由既属于又属于的元组构成的集合。记作例3.1假设关系和如表3-5(a)和(b)所示,则和的并、差、交运算如表3-5(c)、(d)、(e)所示。表3-5(a) (b) (c) (d) (e)ABCABCABCABCABCA1B1C1A1B1C2A1B1C1A1B1C1A1B1

26、C2A1B1C2A2B1C1A1B1C2A2B2C2A2B2C2A2B2C3A2B2C2A2B1C1A2B2C3(4)笛卡尔积(Cartesian Product):设关系和的列数分别为和,元组的个数分别为和,则关系和的笛卡尔积是一种列的元组的集合。每个元组的前个分量来自关系的一种元组,后个分量来自关系的一种元组,且元组的数目有个,记作。例3.2 假设关系和如表3-6(a)和(b)所示,则和的笛卡尔积如表3-6(c)所示。表3-6(a) (b) (c)ABCDEABCDEA1B1C1D1E1A1B1C1D1E1A1B1C2D2E2A1B1C1D2E2A2B2C3A1B1C2D1E1A1B1C2

27、D2E2A2B2C3D1E1A2B2C3D2E22. 专门的关系运算专门的关系运算涉及选择、投影、连接和除法操作。(1)选择操作(Selection):选择是一种一元关系操作,它作用在一种关系上,按给定的选择条件,选出符合条件的元组,记作,其中是一种逻辑体现式,取值为“true”或“false”。简记为:。例3.3 从学生关系中查找姓名是高明的学生。从学生关系中查找出生年份为1987的所有女生。解:姓名=高明(学生) 性别=女 AND 出生年份=1987(学生)上述两个选择操作的成果如表3-7和3-8所示。表3-7 例3.3的操作成果学号姓名性别出生年份入年份班级号050126高明男19870

28、5111表3-8 例3.3的操作成果学号姓名性别出生年份入年份班级号050125刘菲女198705111(2)投影操作(Projection):投影也是一元关系操作。投影操作选用关系的某些列。关系在属性列上的投影记作:,简记为:()。例3.4 从学生关系中查找所有学生的姓名和入年份。解:姓名,入年份(学生)成果如表3-9所示。表3-9 例3.4的操作成果 表3-10 例3.5的操作成果姓名入年份入年份班级号赵铁04777李芳05111高明刘菲注意:投影操作后的关系也许会浮现内容完全相似的若干个元组,而根据关系的规定不容许浮现内容完全相似的元组,因此成果只能保存其中一种元组。例3.5从学生关系中

29、查找所有学生的入年份和班级号。解:入年份,班级号(学生)成果如表3-10所示(该表中去掉了内容完全相似的两个元组)。投影操作可以和选择操作组合起来应用。例如,若要查找所有女生的姓名,则表达如下:姓名(性别=女(学生) (3)连接操作(Join):连接是二元关系操作,以符号表达。它的定义为: R S=连接条件(RS) 连接与笛卡尔积的区别在于笛卡尔积涉及两个关系的所有元组的组合,而连接只涉及满足连接条件的元组的组合。如果连接条件为两个关系中的两个属性进行相等比较,则称为等值连接。若在等值连接中再规定两个关系中进行比较的分量必须是相似的属性组,并且在成果中去掉反复的属性列,则称为自然连接。在自然连

30、接表达式中一般可以省略连接条件。例3-6 假设有一选课表如表3-11所示。则表3-12为等值连接:学生选课 的成果,表3-13为自然连接:学生选课的成果。表3-12 学生选课的操作成果学生.学号姓名性别出生年份入年份班级号选课.学号课号成绩040123赵铁男1986047770401230188040234李芳女1986047770402340290表3-11 选课 表3-13 学生选课的操作成果学号课号成绩学号姓名性别出生年份入年份班级号课号成绩0401230188040123赵铁男19860477701880402340290040234李芳女1986047770290(4)除操作(Div

31、ision)。一方面引入像集(Image Set)的概念。设关系,是属性组,则中属性组上的值为的各元组在分量上集合,称为在中的像集。记作设有关系和,为属性组,则与的除运算定义为中满足如下条件的元组在属性上的投影:关系中的元组在上分量值的像集涉及在上投影的集合。记作例3-7关系和如表3-14(a)、(b)所示,则和的除运算如表3-14(c)所示。在关系R中,(A,B)可以取三个值(A1,B1),(A2,B2),(A3,B2)(A1,B1)的像集为(C1,D1),(C2,D2),(C3,D3)(A2,B2)的像集为(C1,D1),(C2,D2)(A3,B2)的像集为(C1,D1),(C1,D2)S

32、在(C,D)上的投影为(C1,D1),(C2,D2)由此可以看出,(A1,B1)与(A2,B2)的像集涉及了S在(C,D)上的投影,因此的成果涉及(A1,B1)与(A2,B2)两个元组。表3-14(a) (b) (c)ABCDCDEABA1B1C1D1C1D1E1A1B1A1B1C2D2C2D2E3A2B2A1B1C3D3A2B2C1D1A2B2C2D2A3B2C1D1A3B2C1D2二、关系模型的数据完整性约束数据完整性是指数据库中存储的数据是故意义的或对的的。关系模型中的数据完整性规则是对关系的某种约束条件。关系模型的完整性约束重要涉及三大类:实体完整性、参照完整性和顾客定义的完整性。1.

33、 实体完整性实体完整性规则规定:每个关系都必须有主健,各元组的主键的值不能相似,主键的属性(即主属性)值不容许取空值。所谓空值就是“不懂得”或“无意义”的值。例如,当某一种学生选修了某一门课程后,便向表3-11所示的选课表插入一种元组,但在学生尚未考试之前,成绩是不懂得的,因此该元组的成绩属性的值为空值。空值一般用NULL表达。之因此规定每个关系都必须有主健,是由于主健可以唯一地拟定一种元组;如果两个元组的主键的值相似,则无法辨别这两个元组;而如果某一元组的主键的值为空值,则阐明存在某个无法辨认的实体。目前大多数DBMS支持实体完整性约束检查,但不是强制和彻底的,只有当顾客在关系模式中定义了主

34、键之后,DBMS才进行实体完整性约束检查,若顾客不定义主键,则无从进行实体完整性约束检查。2. 参照完整性参照完整性也称为引用完整性。参照完整性约束是不同关系之间或同一关系的不同元组间的约束。设FK是关系R的外键,它与关系S的主键PK相相应(即FK引用关系S的主键PK)。则参照完整性规则规定:对于R中每个元组在FK上的值或者取空值,或者等于S中某个元组的主键值。即外键要么是空值,要么是引用实际存在的主键值。例3-8 假设有如下两个实体(其中带下划线的为主键):学生(学号,姓名,性别,专业号)专业(专业号,专业名)显然,学生关系中的“专业号”引用了专业关系的主键“专业号”,即学生关系中的“专业号

35、” 为外键。根据参照完整性规则规定:学生关系中的“专业号” 属性值或者是空值,或者是专业关系中已存在的专业号。专业号为空值阐明尚未给该学生分派专业。如果给该学生分派专业,必须分派一种已存在的专业。例3-9 从表3-11与表3-4可以看出,选课关系中的“学号”引用了学生关系的主键“学号”,即选课关系中的“学号”为外键,则按照参照完整性规则规定,选课关系中的“学号”属性值或者是空值,或者是学生关系中已存在的学号。但由于“学号”和“课程号” 是选课关系的主属性,按照实体完整性规则规定,它们均不能取空值。因此选课关系中的“学号”只能取学生关系中已存在的学号。3. 顾客定义的完整性任何关系数据库系统都应

36、当支持实体完整性和参照完整性。除此之外,不同的数据库应用系统根据其应用环境的不同,往往还需要某些特殊的约束条件,顾客定义的完整性就是针对某一具体应用领域定义的数据库约束条件。它阐明某一具体应用所波及的数据必须满足的语义规定。例如:学生的“年龄”属性的值不能不小于100或不不小于5,“性别”属性的值只能是“男”或“女”;选课的“成绩” 属性的值不能不不小于零;等等。一般状况下,顾客定义的完整性事实上就是指明关系中属性的取值范畴,即属性的域。因此,顾客定义的完整性也称为域完整性。第三节 关系规范化在讨论了关系模型的基本概念与关系操作语言后,接下来要讨论针对一种具体问题,如何构造一种合适的关系模式。

37、关系规范化理论为我们提供了判断关系模式好坏的理论原则。而这些原则是根据属性间的依赖关系,即函数依赖的概念给出的,因此,本节一方面讨论函数依赖的概念,然后讨论规范化原则。一、函数依赖的基本概念1. 函数依赖假设是一种关系模式,是的属性集合,和是的子集,即。设是关系中的任意两个元组,如果由可以推导出。则称“X函数决定Y”或“Y函数依赖于X”,记作。对于函数依赖,需要阐明如下几点。(1)函数依赖不是指关系模式的某个或某些关系实例满足的约束条件,而是指的所有关系实例均要满足的约束条件。(2)函数依赖和别的数据之间的依赖关系同样,是语义范畴的概念。例如,“姓名年龄”这个函数依赖只有在没有同名人的条件下成

38、立。如果有相似名字的人,则“年龄”就不再依赖于“姓名”了。(3)若,则称为这个函数依赖的决定属性集(determinant)。2. 平凡函数依赖与非平凡函数依赖在关系模式中,和是的子集,即,如果,但,则称是非平凡函数依赖。若,则称为平凡函数依赖。对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,平常所指的函数依赖一般都是指非平凡函数依赖。3. 完全函数依赖与部分函数依赖设X、Y是某关系的不同属性集,如,且不存在,使,则称Y完全函数依赖(Full Functional Dependency)于X,记作;否则称Y部分函数依赖(Partial Function Dep

39、endency)于X,记作。4. 传递函数依赖设X、Y、Z是某关系的不同的属性集,如果,则称Z对X传递函数依赖(Transitive Functional Dependency)。为了综合阐明以上概念,假定有如下关系,S(学号,姓名,性别,系名,系主任,课程号,课程名,成绩),主键为(学号,课程号)。则函数依赖关系有:(学号,课程号)成绩,即(学号,课程号)函数决定成绩,或者说成绩函数依赖于(学号,课程号)。由于一种成绩必然依赖于一种学生选修的某一门课程。同步尚有:学号姓名,学号性别,学号系名,系名系主任,课程号课程名等函数依赖关系。对于(学号,课程号)成绩,由于学号成绩,课程号成绩(即学生学

40、号或课程号都不能唯一拟定一种学生的成绩),因此有(学号,课程号)成绩,即成绩完全函数依赖于学号和课程号。对于(学号,课程号)姓名,由于学号姓名,因此有(学号,课程号)姓名,即姓名部分函数依赖于学号和课程号。由于学号系名,并且有系名学号,系名系主任,因此学号系主任是传递函数依赖关系。二、规范化1. 为什么要对关系模式进行规范化当设计完一种关系模式后,我们要考察它与否一种“好”的模式,或者说看它与否存在问题。下面通过一种例子,来分析一种设计不好的关系模式有也许会浮现的问题。例如:对于前面的关系S(学号,姓名,性别,系名,系主任,课程号,课程名,成绩),存在如下问题:(1)数据冗余。当一种学生选修多

41、门课程时,就会导致姓名、性别、系名、系主任和课程名多次反复存储,导致数据冗余。(2)数据修改复杂。由于数据存储冗余,当更新某些数据项时,也许一部分修改了,而另一部分字段修改,导致存储数据的不一致性。例如,当一种学生从计算机系转到信息管理系后,不仅要修改系名,还要修改系主任,从而导致数据修改复杂化。(3)数据插入异常。如果某个学生未选修课程,则其学号、姓名、性别等基本信息也无法插入,由于课程号为空,关系数据模式规定主键不能为空或部分为空,从而浮现数据插入异常。(4)数据删除异常。如果某个学生选修了一门课程,后来又不选了,则应当删除该学生此门课程的记录。但由于该学生只选修了一门课程,那么删除掉这条

42、记录后,该学生的学号、姓名、性别等基本信息也删除了,从而浮现删除异常。之因此会浮现以上几种问题,是由于这个关系模式没有设计好,使得某些属性之间存在着“不良”的函数依赖。解决上述问题的措施就是进行关系模式的合理分解,也就是进行关系模式的规范化。2. 范式对关系模式的规范化,就是要使它满足不同级别的范式。范式(Normal Forms, 记作NF)的概念是由E.F.codd在1971年提出的,她在1971年1972年提出了第一范式(1NF)、第二范式(2NF)与第三范式(3NF)。1974年codd和Boyce又共同提出了BCNF。1976年Fagin提出了4NF,后来又有人提出了5NF。各范式之

43、间的关系(如图3-5所示)表达为:通过模式分解把属于低档范式的关系模式转换为几种属于高档范式的关系模式的集合,这一过程称为规范化(Normalization)。一般把某一关系为第范式,简记为。2NF1NF4NFBCNF 3NF5NF图3-5 多种范式之间的关系1. 第一范式(1NF)定义3.1对于关系模式的任一关系,若其每一属性值都是基本属性(或原子属性),则称为满足第1范式的关系,记作。在任何一种关系数据库系统中,第一范式是对关系模式的一种必须满足的规定,不满足第一范式的数据库模式不能称为关系数据库模式。因此,所给出的关系模式均满足第一范式。2. 第二范式(2NF)定义3.2若关系模式属于第

44、1范式,且每个非主属性都完全函数依赖于主键,则属于第二范式,记作。例3.10对于前面给出的关系S,主键为(学号,课程号)。由于存在非主属性姓名、性别、课程名部分函数依赖于(学号,课程号)。因此,它不属于2NF。可以通过模式分解的措施将非2NF的关系模式分解为多种满足2NF的关系模式。分解环节如下:(1)一方面用构成主键的属性集合的每个子集作为主键构成一种关系,对于关系S分解为如下3个子关系:S1(学号,),其中(学号)为主键S2(课程号,),其中(课程号)为主键S3(学号,课程号,),其中(学号,课程号)为主键(2)对于每个子关系,将依赖于此主键的属性放置到此关系中,则有:S1(学号,姓名,性

45、别,系名,系主任),其中(学号)为主键S2(课程号,课程名),其中(课程号)为主键S3(学号,课程号,成绩),其中(学号,课程号)为主键由于分解后消除了原关系模式S中的部分函数依赖,即S1、S2和S3三个关系模式都不存在部分函数依赖,因此S1、S2和S3都属于2NF。对于上述分解后的关系S1,存储多少个学生,就需要将其所在的系名和系主任存储多少遍,浮现数据冗余现象。另一方面,当组建一种新系时,如果该系还没有招生,虽然已有系名和系主任,但仍无法插入此系的信息,由于这时的学号为空,浮现插入异常现象。由此可以看出,满足第二范式的关系模式仍然也许浮现异常操作。这是由于第二范式只规定每个非主属性完全依赖

46、于主键,并未限定非主属性不能函数依赖于其她非主属性,从而也就容许传递依赖的存在。因此,还需要对满足第二范式的关系模式进一步判断与分解。3. 第三范式(3NF)定义3.3若关系模式属于第二范式,且每个非主属性都不传递依赖于主键,则属于第三范式。记作。例3.11 分解例3.10中的学生关系S1,使其满足3NF的规定。解:由于在关系S1中,学号系主任是传递函数依赖。因此,它不属于3NF。将关系模式S1(学号,姓名,性别,系名,系主任)进一步分解,以便去掉传递依赖关系,分解的环节如下:(1)对于不是候选键的每个决定因子,从关系中删除依赖它的所有属性。在关系S1中,系名不是候选键,但是决定因子,从关系S

47、1中删除依赖它的属性系主任,得到新的关系S11(学号,姓名,性别,系名)。(2)新建一种关系,该关系中涉及原关系中不是候选键的决定因子以及所有依赖该决定因子的属性,并将决定因子作为该关系的主键。对于关系S1,新建的关系为S12(系名,系主任),主键为(系名)。由于分解后消除了原关系模式中的传递依赖,因此S11和S12都满足3NF。当按第三范式的规定把所有传递依赖都消除时,也应当把部分依赖消除。即若关系模式属于第三范式,则每个非主属性对于主键既不存在部分依赖,也不存在传递依赖。把关系模式分解到第三范式,可以在相称限度上减轻原关系中的异常和信息冗余,但不能保证完全消除关系模式中的多种异常和信息冗余

48、。4. BC范式(BCNF)定义3.4设有关系模式,是的函数依赖集,若中的每个非平凡函数依赖,都具有主键,则称是Boyce-Codd范式,记作。从BCNF的定义可以看出,BC范式既检查非主属性,又检查主属性,显然比第三范式限制更严。当只检查非主属性而不检查主属性时,就成了第三范式。因此,任何满足BC范式的关系都必然满足第三范式。例3.12 设有关系模式,其中表达街道名,表达都市名,表达邮政编码。根据语义,的函数依赖集,如图3-6所示,是主键。SCZ图3-6关系模式解:,但,由于存在非平凡函数依赖。该关系模式存在着异常问题,由于缺少键中的,若要插入一种都市的邮编,但不知具体的街道,该关系模式就不

49、容许这样的操作。要消除异常,则必须转化为BCNF,将分解为两个关系模式,即把和分开。如果只考虑函数依赖,则属于BCNF的关系模式已达到最高规范化限度。而4NF与5NF分别波及到多值依赖和连接依赖,限于篇幅,这里不再讨论4NF与5NF。第四节 逻辑构造设计的任务逻辑构造设计的任务是把在概念构造设计阶段设计好的E-R模型转换为具体的数据库管理系统支持的数据模型。本节以关系模型为例,简介逻辑构造设计的任务,重要涉及两个环节:将E-R模型转换为关系模型和关系模型的优化。一、E-R模型向关系模型的转换进行数据库的逻辑设计,首选要将概念设计中所得的E-R图转换成等价的关系模式。将E-R图转换为关系模型事实

50、上就是将实体、实体的属性和实体之间的联系转化为关系模式。其中实体和联系都可以表达到关系,E-R图中的属性可以转换成关系的属性。1. 实体的转换一种实体转换为一种关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。例如,图3-7个给出了一种教务管理系统的E-R图。系教师学生学号姓名性别年龄课程课程号课程名学分选课成绩属于系籍任课教师号姓名性别职称名称电话mnnnmn11图3-7教务管理系统的E-R图职称图3-7所示的E-R图中的4个实体学生、课程、教师、系分别转换成如下4个关系模式:学生(学号,姓名,性别,年龄)课程(课程号,课程名,学分)教师(教师号,姓名,性别,职称)系(系名,电话

51、)2. 联系的转换(1)一种1:1联系可以转换为一种独立的关系模式,也可以与任意一端实体所相应的关系模式合并。如果转换为一种独立的关系模式,则与该联系相连的各实体的主键以及联系自身的属性转换为关系的属性,每个实体的主键均可以作为该关系的主键。如果是与联系的任意一端实体所相应的关系模式合并,则需要在该关系模式的属性中加入另一种实体的主键和联系自身的属性。一般状况下,1:1联系不转换为一种独立的关系模式。经理部门管理性别姓名部门号部门名11工号 图3-8 1:1联系示例例如,对于如图3-8所示的E-R图,如果将联系与经理一端所相应的关系模式合并,则转换成如下两个关系模式:经理(工号,姓名,性别,部

52、门号),其中工号为主键,部门号为引用部门关系的外键。部门(部门号,部门名),其中部门号为主键。如果将联系与部门一端所相应的关系模式合并,则转换成如下两个关系模式:经理(工号,姓名,性别),其中工号为主键。部门(部门号,部门名,工号),其中部门号为主键,工号为引用经理关系的外键。如果将联系转换为一种独立的关系模式,则转换成如下三个关系模式:经理(工号,姓名,性别),其中工号为主键。部门(部门号,部门名),其中部门号为主键。管理(工号,部门号),其中工号与部门号均可作为主键(这里将工号作为主键),同步也都是外键。(2)一种1:n联系可以转换为一种独立的关系模式,也可以与n端实体所相应的关系模式合并

53、。如果转换为一种独立的关系模式,则与该联系相连的各实体的主键以及联系自身的属性转换为关系的属性,n端实体的主键为该关系的主键。一般状况下,1:n联系也不转换为一种独立的关系模式。例如,对于如图3-6所示的E-R图中的系与学生的1:n联系,如果与n端实体学生所相应的关系模式合并,则只需将学生关系模式修改为:学生(学号,姓名,性别,年龄,系名),其中学号为主键,系名为引用系的外键。如果将联系转换为一种独立的关系模式,则需增长如下关系模式:系藉(学号,系名),其中学号为主键,学号与系名均为外键。(3)一种m:n联系要转换为一种独立的关系模式,与该联系相连的各实体的主键以及联系自身的属性转换为关系的属

54、性,该关系的主键为各实体主键的组合。例如,对于如图3-6所示的E-R图中的学生与课程的m:n联系,需转换为如下的一种独立的关系模式:选课(学号,课程号,成绩),其中(学号,课程号)为主键,同步也是外键。(4)三个或三个以上的实体间的一种多元联系可以转换为一种关系模式,与该多元联系相连的各实体的主键以及联系自身的属性均转换为该关系的属性,关系的主键为各实体主键的组合。此外,具有相似主键的关系模式可以合并。上述E-R图向关系模型的转换原则为一般原则,对于具体问题还要根据其特殊状况进行特殊解决。例如在第二章的例2.1所给出的图书管理状况的E-R图中,读者与图书是m:n的联系,按照上述转换原则,借阅联

55、系需转换为如下的一种独立的关系模式:借阅(借书证号,书号,借阅日期,还书日期),其中(借书证号,书号)为主键。但实际状况是:一种借书证号借阅某一本书,还掉后来还可以再借,这样就会在借阅关系中浮现两个或两个以上的具有相似借书证号和书号的元组,由此可以看出,借书证号和书号不能作为该关系的主键,必须增长一种借阅日期属性,即(借书证号,书号,借阅日期)为主键。在E-R图向关系模式的转换中也许波及到命名和属性域的解决、非原子属性的解决、弱实体的解决等问题。(1)命名和属性域的解决。关系模式的命名,可以采用E-R图中本来的命名,也可以另行命名。命名应有助于对数据的理解和记忆,同步应尽量避免重名。DBMS一

56、般只支持有限的几种数据类型,而E-R数据模型是不受这个限制的。如果DBMS不支持E-R图中某些属性的域,则应做相应的修改。(2)非原子属性的解决。E-R数据模型中容许非原子属性,而关系要满足的四个条件中的第一条就是关系中的每一列都是不可再分的基本属性。因此,在转换前必须先把非原子属性进行原子化解决。(3)弱实体的解决。图3-9是一种弱实体的例子,家属是个弱实体,职工是其所有者实体。弱实体不能独立存在,它必须依附于一种所有者实体。在转换成关系模式时,弱实体所相应的关系中必须涉及所有者实体的主键,即职工号。职工号与家属的姓名构成家属的主键。弱实体家属相应的关系模式为:家属(职工号,姓名,性别,与职

57、工关系)职工职工家属家属职工号姓名出生日期姓名性别与职工关系1n图3-9含弱实体的E-R图实例二、关系模型的优化数据库逻辑设计的成果不是唯一的。为了进一步提高数据库应用系统的性能,还应当根据应用的需要对数据模型的构造进行合适的修改和调节,这就是数据模型的优化。关系数据模型的优化一般以规范化理论为指引,措施如下。1. 实行规范化解决考察关系模式的函数依赖关系,拟定范式级别,逐个分析各关系模式,考察与否存在部分函数依赖、传递函数依赖等,拟定它们分别属于第几范式。拟定范式级别后,逐个考察各个关系模式,根据应用规定,判断它们与否满足规范规定。2. 模式评价关系模式的规范化不是目的而是手段,数据库设计的

58、目的是最后满足应用需求。因此,为了进一步提高数据库应用系统的性能,还应当对规范化后产生的关系模式进行评价、改善,通过反复多次的尝试和比较,最后得到优化的关系模式。模式评价的目的是检查所设计的数据库与否满足顾客的功能与效率规定。拟定加以改善的部分。模式评价涉及功能评价和性能评价。(1)功能评价。功能评价指对照需求分析的成果,检查规范化后的关系模式集合与否支持顾客所有的应用规定。关系模式必须涉及顾客也许访问的所有属性。在波及多种关系模式的应用中,应保证连接后不丢失信息。如果发既有的应用不被支持,或不完全被支持,则应改善关系模式。发生这种问题的因素也许是在逻辑构造设计阶段,也也许是在系统需求分析或概

59、念构造设计阶段。(2)性能评价。对于目前得到的数据库模式,由于缺少物理设计所提供的数量测量原则和相应的评价手段,因此性能评价是比较困难的。只能对实际性能进行估计,涉及逻辑记录的存取数、传送量以及物理设计算法的模型等。美国密执安大学的T.Teorey和J.Fry于1980年提出的逻辑记录访问(Logical Record Access, LRA)措施是一种常用的模式性能评价措施。LRA措施对网状模型和层次模型较为实用,对于关系模型的查询也能起一定的估算作用。3. 模式改善根据模式评价的成果,对已生成的模式进行改善。如果由于系统需求分析、概念构造设计的疏漏导致某些应用不能得到支持,则应当增长新的关系模式或属性。如果由于性能考虑而规定改善,则可采用合并或分解的措施。(1)合并。如果有若干个关系模式具有相似的主码,并且对这些关系模式的解决重要是查询操作,并且常常是多关系的查询,那么可对这些关系模式按照使用频率进行合并。这样可以减少连接操作而提高查询效率。(2)分解。为了提高数据操作的效率和存储空间的运用率,最常用和最重要的模式优化措施就是分解,根据应用的不同规定,可以对关系模式进行垂直分解和水平分解。水平分解是把关系的元组分为若干子集合,每个子集合定义为一种子关系模式。对于常常进行大量数据的分类条件查询的关系,可进行水平分解,这样可以减少应用系统每次查询需要访问的记录,从而提高了查询性

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!