数据库原理-精品课件

上传人:新** 文档编号:585104433 上传时间:2024-09-01 格式:PPT 页数:445 大小:8.39MB
返回 下载 相关 举报
数据库原理-精品课件_第1页
第1页 / 共445页
数据库原理-精品课件_第2页
第2页 / 共445页
数据库原理-精品课件_第3页
第3页 / 共445页
数据库原理-精品课件_第4页
第4页 / 共445页
数据库原理-精品课件_第5页
第5页 / 共445页
点击查看更多>>
资源描述

《数据库原理-精品课件》由会员分享,可在线阅读,更多相关《数据库原理-精品课件(445页珍藏版)》请在金锄头文库上搜索。

1、第一章 绪 论本章要求:本章要求:1 数据库系统概述数据库系统概述4 数据库系统的组成数据库系统的组成2 2 数据模型数据模型3 3 DBSDBS的结构的结构本章内容:本章内容:1、了解数据管理的发展过程、了解数据管理的发展过程2、掌握数据库系统的基本概念和主要特点、掌握数据库系统的基本概念和主要特点3、掌握数据库系统的三级模式结构和数据库系统的组成、掌握数据库系统的三级模式结构和数据库系统的组成4、掌握实体、记录等有关概念和三种数据模型、掌握实体、记录等有关概念和三种数据模型请选择内容请选择内容返回返回2024/9/11数据库系统数据库系统第一章 绪 论一、基本概念一、基本概念1、数据数据:

2、描述事务的符号记录。可用文字、图形等多种形式表:描述事务的符号记录。可用文字、图形等多种形式表示,经数字化处理后可存入计算机。示,经数字化处理后可存入计算机。2、数据库(数据库(DB):按一定的数据模型组织、描述和存储在计算按一定的数据模型组织、描述和存储在计算机内的、有组织的、可共享的数据集合。机内的、有组织的、可共享的数据集合。3、数据库管理系统(数据库管理系统(DBMS):位于用户和操作系统之间的一层位于用户和操作系统之间的一层数据管理软件。主要功能包括:数据管理软件。主要功能包括: 数据定义功能数据定义功能:DBMS提供提供DDL,用户通过它定义数据对象。用户通过它定义数据对象。 数据

3、操纵功能数据操纵功能:DBMS提供提供DML,用户通过它实现对数据库的用户通过它实现对数据库的查询、插入、删除和修改等操作。查询、插入、删除和修改等操作。1 数据库系统概述数据库系统概述2024/9/12数据库系统数据库系统第一章 绪 论 数据库的运行管理数据库的运行管理:DBMS对数据库的建立、运对数据库的建立、运行行和维护进和维护进行统一管理、统一控制,以保证数据的安全性、完整性、并发行统一管理、统一控制,以保证数据的安全性、完整性、并发控制及故障恢复。控制及故障恢复。 数据库的建立和维护功能数据库的建立和维护功能:数据库初始数据的输入、转换,:数据库初始数据的输入、转换,数据库的转储、恢

4、复、重新组织及性能监视与分析等。数据库的转储、恢复、重新组织及性能监视与分析等。4、数据库系统(数据库系统(DBS):计算机中引入数据库后的系统,包括计算机中引入数据库后的系统,包括 数据库数据库DB 数据库管理系统数据库管理系统DBMS 应用系统应用系统 数据库管理员数据库管理员DBA和用户和用户2024/9/13数据库系统数据库系统第一章 绪 论二、数据管理与数据处理二、数据管理与数据处理 1、数据管理数据管理: 对数据收集、整理、组织、存储、维护、检索、传送等对数据收集、整理、组织、存储、维护、检索、传送等对象对象操作操作目标:在妥当的时候以妥当的形式给妥当的人提供妥当的数据。目标:在妥

5、当的时候以妥当的形式给妥当的人提供妥当的数据。2、数据处理数据处理:对数据进行加工、计算、提炼,:对数据进行加工、计算、提炼, 从而产生新的有效数据的过程从而产生新的有效数据的过程数据数据信息信息2024/9/14数据库系统数据库系统第一章 绪 论3、管理与处理的关系管理与处理的关系: 管理是处理的基础管理是处理的基础 处理为管理服务处理为管理服务数据处理数据处理数据处理数据处理源数据源数据新数据新数据新数据新数据 管理和处理又可看管理和处理又可看成一个问题的两个阶成一个问题的两个阶段,故可以统一起来,段,故可以统一起来,其中心是管理其中心是管理数据管理数据管理 数据管理数据管理 2024/9

6、/15数据库系统数据库系统第一章 绪 论三、数据管理的发展阶段三、数据管理的发展阶段 人工管理阶段(人工管理阶段(50年代中期以前)年代中期以前) 文件系统阶段(文件系统阶段(50年代中期至年代中期至60年代后期)年代后期) 数据库系统阶段(数据库系统阶段(60年代后期以后)年代后期以后)2024/9/16数据库系统数据库系统第一章 绪 论1、人工管理阶段(程序员管理阶段)、人工管理阶段(程序员管理阶段) 特点特点: 数据不保存数据不保存 程序员负责数据管理的一切工作程序员负责数据管理的一切工作 数据和程序一一对应,没有独立性和共享性数据和程序一一对应,没有独立性和共享性数据和程序的关系:数据

7、和程序的关系:应用程序应用程序1数据数据1应用程序应用程序2数据数据2应用程序应用程序n数据数据n2024/9/17数据库系统数据库系统第一章 绪 论 又可分为两个阶段又可分为两个阶段 (1)60年代初期出现了初等的文件系统年代初期出现了初等的文件系统主要特点:主要特点: 组织方式组织方式:顺序文件:顺序文件 数据结构数据结构:物理结构:物理结构 = 逻辑结构逻辑结构 软件功能软件功能:仅有简单:仅有简单I/O操作操作 (2 )60年代中期出现了成熟的文件系统年代中期出现了成熟的文件系统主要特点:主要特点: 组织方式组织方式:顺序和随机存取并用:顺序和随机存取并用 数据结构数据结构:物理结构和

8、逻辑结构有了简单的变换:物理结构和逻辑结构有了简单的变换 软件功能软件功能:软件系统提供了存取方法:软件系统提供了存取方法硬件硬件:有了大容量直接存储外存设备,如磁盘、磁鼓等:有了大容量直接存储外存设备,如磁盘、磁鼓等软件软件:有了专门的数据管理软件:有了专门的数据管理软件-文件系统文件系统处理方式处理方式:有批处理、联机实时处理等:有批处理、联机实时处理等 2、文件系统阶段、文件系统阶段基基 础础2024/9/18数据库系统数据库系统第一章 绪 论 三个主要缺点三个主要缺点: 数据高度冗余数据高度冗余:数据基本上还是面向应用或特定用户的。:数据基本上还是面向应用或特定用户的。 数据共享困难数

9、据共享困难:文件基本上是私有的,只能提供很弱的文:文件基本上是私有的,只能提供很弱的文 件级共享件级共享 数据和程序缺乏独立性数据和程序缺乏独立性:只有一定的物理独立性,:只有一定的物理独立性, 完全没有逻辑独立性。完全没有逻辑独立性。应用程序应用程序1数据数据1应用程序应用程序2数据数据2应用程序应用程序n数据数据n数据与程序的关系:数据与程序的关系:存取方法存取方法操作系统负责操作系统负责2024/9/19数据库系统数据库系统第一章 绪 论3、数据库系统阶段数据库系统阶段 文件系统不能适应大数据量、多应用共享数据的根本原因:文件系统不能适应大数据量、多应用共享数据的根本原因: 数据没有集中

10、管理数据没有集中管理 数据库方法的基本出发点:数据库方法的基本出发点: 把数据统一管理、控制,共享使用把数据统一管理、控制,共享使用应用程序应用程序1应用程序应用程序2应用程序应用程序n数据与程序的关系:数据与程序的关系:DBMS数数据据库库2024/9/110数据库系统数据库系统第一章 绪 论(1) 数据高度结构化集成,面向全组织数据高度结构化集成,面向全组织(2) 数据共享性好。可为多个不同的用户共同使用数据共享性好。可为多个不同的用户共同使用(3) 数据冗余少,易扩充数据冗余少,易扩充(4) 数据和程序的独立性高数据和程序的独立性高物理独立性物理独立性: 存储结构变,逻辑结构可以不变,从

11、存储结构变,逻辑结构可以不变,从 而应用程序也不必改变。而应用程序也不必改变。逻辑独立性逻辑独立性: 总体逻辑结构变,局部逻辑结构可以总体逻辑结构变,局部逻辑结构可以 不变,从而应用程序也不必改变。不变,从而应用程序也不必改变。好处:简化应用程序的编写和维护好处:简化应用程序的编写和维护(5)数据控制统一)数据控制统一 安全性控制安全性控制:防止泄密和破坏:防止泄密和破坏 完整性控制完整性控制:正确、有效、相容:正确、有效、相容 并发控制并发控制: 多用户并发操作的协调控制多用户并发操作的协调控制 故障恢复:故障恢复:发生故障时,将数据库恢复到正确状态发生故障时,将数据库恢复到正确状态主主 要

12、要 优优 点点2024/9/111数据库系统数据库系统第一章 绪 论4、各个阶段的比较各个阶段的比较: 从四个方面从四个方面 人工管理人工管理 文件系统文件系统 数据库系统数据库系统谁管理数据谁管理数据面向谁面向谁共享性共享性数据独立性数据独立性程序员程序员特定应用特定应用不能不能没有没有操作系统提供存取方法操作系统提供存取方法系统集中管理系统集中管理基本上是特定用户基本上是特定用户共享很弱共享很弱面向系统面向系统充分共享充分共享一定的物理独立性一定的物理独立性较高的独立性较高的独立性 文件系统和数据库系统的本质区别文件系统和数据库系统的本质区别:内部内部:数据库的数据是结构化的,有联系的:数

13、据库的数据是结构化的,有联系的 文件系统的各记录无联系文件系统的各记录无联系外部外部:数据库系统是共享的:数据库系统是共享的 文件系统基本上是面向特定用户的文件系统基本上是面向特定用户的2024/9/112数据库系统数据库系统第一章 绪 论2 2 数据模型数据模型数据处理的抽象过程(涉及三个领域)数据处理的抽象过程(涉及三个领域) 建立概念模型 建立数据模型 (便于用户和DB设计人员交流) (便于机器实现)一、概念模型(信息模型) 把现实世界中的客观对象抽象成的某种信息结构,主要用于数据库设计。 独立于具体的计算机系统 独立于具体的DBMS支持的数据模型现实世界现实世界 = 信息世界信息世界抽

14、象= 机器世界(数据世界)机器世界(数据世界)转换2024/9/113数据库系统数据库系统第一章 绪 论实体实体:客观存在并可相互区分的事物。实体集实体集:性质相同的同类实体的集合。属性属性: 实体具有的某一特性。实体标识符实体标识符:能将一个实体与其它实体区分开来的一个 或一组属性。信息世界记录记录 实体 (抽象表示)文件文件 实体集字段或数据项字段或数据项 属性关键字关键字 实体标识符。唯一地标识一个记录。 又称码、键。数据世界1、实体与记录2024/9/114数据库系统数据库系统第一章 绪 论2、型与值 在DBS中,每一个对象广义上讲都有型与值之分: 型型是对象的结构或特性描述, 值值是

15、一个具体的对象实例。类似于程序设计语言中数据类型数据类型与数据值数据值的概念。(1)实体型:对实体固有特性或结构的描述。 用实体名及其属性名集合来抽象和刻画。 如 汽车(车牌号,车型,车主)实体值:实体型的一个实例,即一个具体的实体。 如 (豫A00001,丰田,张三)(2) 记录型:记录格式。 记录值:一个具体的记录。2024/9/115数据库系统数据库系统第一章 绪 论如:车牌号名称车主豫A00001丰田张三(3)几点说明 区分型与值的实质 DBS中讨论的重点是型 通常只说实体、记录,含义根据上下文自明3、实体间的联系 实体内部的联系实体内部的联系(属性间的联系): 反映在数据上就是记录内

16、部数据项间的联系 实体之间的联系实体之间的联系: 反映在数据上就是记录之间的联系2024/9/116数据库系统数据库系统第一章 绪 论(1) 1对对1联系(联系(1 :1):):两个实体集中的每一个实体至多和另一个实体集中的一个实体有联系。如如 国家国家 部长部长 学员队学员队 学员学员(2) 1对多联系(对多联系(1 :n):):若实体集A中的每个实体与实体集B中0个或多个实体有联系,而B中每个实体至多与A中的一个实体有联系,则称从A到B为1对多的联系。如如 国家国家 总统总统 学员队学员队 队长队长实体之间的联系可归结为三类:(3) 多对多联系(多对多联系(m :n):):两个实体集中的每

17、一个实体都和另一个实体集中0个或多个实体有联系。如如 学员学员 课程课程2024/9/117数据库系统数据库系统第一章 绪 论DBS的核心问题之一: 如何表示和处理实体及实体间的联系。4、概念模型的表示方法之一: 实体实体联系方法联系方法(Entity-Relationship Approach) 用ER图( Entity-Relationship Diagram)描述: 实体型:用长方形表示 联系 :用菱形表示 属性 :用椭圆形表示 框内写上相应的名称 用无向边连接: 实体与其属性联系与其属性联系与有关实体,并标上联系类型并标上联系类型实体名实体名联系名联系名实体名实体名属性名属性名属性名属

18、性名属性名属性名1n2024/9/118数据库系统数据库系统第一章 绪 论说明:说明: 联系也必须命名联系也必须命名 多个实体之间也可以有联系多个实体之间也可以有联系 联系也可以有属性联系也可以有属性学员领导1n供应量单个实体之间也可以有联系单个实体之间也可以有联系项 目供应商零 件供应pmn2024/9/119数据库系统数据库系统第一章 绪 论例:某工厂物资管理例:某工厂物资管理E-R图(图(P20)供应商供应商供应商号供应商号姓名姓名地址地址帐号帐号电话号码电话号码项项 目目项目号项目号预算预算开工日期开工日期 仓仓 库库仓库号仓库号面面 积积电话号电话号 职职 工工职工号职工号 姓名姓名

19、 年龄年龄 职称职称零零 件件零件号零件号 名称名称 规格规格 单价单价 描描 述述库存库存库存量库存量mn工作工作1n领导领导1n供应供应供应量供应量mnp2024/9/120数据库系统数据库系统第一章 绪 论二、数据模型二、数据模型 是对现实世界进行抽象的工具,它按计算机系统的观点对是对现实世界进行抽象的工具,它按计算机系统的观点对数据建模,用于提供数据库系统中信息表示和操作手段的形式数据建模,用于提供数据库系统中信息表示和操作手段的形式框架,主要用于框架,主要用于DBMS的实现,是数据库系统的核心和基础。的实现,是数据库系统的核心和基础。1、常用的数据模型、常用的数据模型 层次模型层次模

20、型 网状模型网状模型 关系模型关系模型 面向对象模型面向对象模型称作非关系模型,是下称作非关系模型,是下列基本层次联系的集合列基本层次联系的集合Ri,Rj是实体型(记录型)是实体型(记录型)Lij是从是从Ri到到Rj的的1:1或或1:n联系联系 Ri Rj Lij2024/9/121数据库系统数据库系统第一章 绪 论2、数据模型、数据模型 的的 三要素三要素形式化描述形式化描述数据数据、数据之间的联系数据之间的联系以及以及数据操作数据操作和有关的和有关的语义语义约束规则约束规则的方法的方法数据结构数据结构数据操作数据操作完整性约束完整性约束如何保证数据的如何保证数据的约束条件得到满足约束条件得

21、到满足如如 何何 实实 现现查、增、删、改查、增、删、改如何表示如何表示实体及联系实体及联系(难点是表示联系)(难点是表示联系)根据现实世界实体间联系的特征根据现实世界实体间联系的特征用四种不同的方法进行抽象用四种不同的方法进行抽象层次模型层次模型网状模型网状模型关系模型关系模型面向对象模型面向对象模型(因此,是按照数据结构因此,是按照数据结构的类型来命名数据模型)的类型来命名数据模型)(动态动态)(静态静态)2024/9/122数据库系统数据库系统第一章 绪 论3、层次模型 根据一个单位的组织结构直观地得出学院 部 系 处 学员队教研室教员学员方框表示一个实体型方框表示一个实体型 (结点)(

22、结点) 线表示联系线表示联系 (边)(边)(1)定义:)定义:用树形结构来表示实体以及实体间联系的模型用树形结构来表示实体以及实体间联系的模型。 其特征是:(其特征是:(a)有且仅有一个结点无双亲(根结点);有且仅有一个结点无双亲(根结点); (b)其它结点有且仅有一个双亲。其它结点有且仅有一个双亲。2024/9/123数据库系统数据库系统第一章 绪 论(2)说明:)说明: (a)树中实体间联系只能是从父到子的树中实体间联系只能是从父到子的1:1或或1:n联系,联系, 对对m:n联系,须使用辅助手段转换成多个联系,须使用辅助手段转换成多个1:n联系,联系, 但不易掌握但不易掌握 (b)简单直观

23、,结构清晰,运行效率高,但编程复杂简单直观,结构清晰,运行效率高,但编程复杂 4、网状模型、网状模型 (1)定义:)定义:用图结构来表示实体以及实体间联系的模型用图结构来表示实体以及实体间联系的模型。 其特征是:任一结点都可以无双亲或有一个以上的双亲。其特征是:任一结点都可以无双亲或有一个以上的双亲。例教员学校班级学生课程2024/9/124数据库系统数据库系统第一章 绪 论(2)优:)优:可表示可表示m:n的联系,运行效率高的联系,运行效率高 缺:过于复杂,实现困难缺:过于复杂,实现困难(3)说明)说明 (a)即使对网状模型,即使对网状模型,具体在计算机上实现时,具体在计算机上实现时,m:n

24、 的的联系仍需分解成若干个联系仍需分解成若干个1:n的联系的联系。(因此,网状模型的图。(因此,网状模型的图结构实质上是有向图),如结构实质上是有向图),如学学 生生课课 程程选课选课mn课程成绩单课程成绩单学生成绩单学生成绩单学号学号 姓名姓名 年龄年龄 性别性别课程号课程号 名称名称学号学号 课程号课程号 得分得分2024/9/125数据库系统数据库系统第一章 绪 论(b)网状模型中允许两结点间有多条边,网状模型中允许两结点间有多条边, 层次模型则不允许层次模型则不允许5、关系模型、关系模型 层次、网状模型基本上是面向专业人员的,使用极不方便层次、网状模型基本上是面向专业人员的,使用极不方

25、便 问题:寻找一种能面向一般用户的数据模型问题:寻找一种能面向一般用户的数据模型? (1)定义:)定义:用二维表(关系)来描述实体及实体间联系的模用二维表(关系)来描述实体及实体间联系的模型型。(2)示例)示例零零 件件供应商供应商供应供应mn 设 备 工 人 使用保养2024/9/126数据库系统数据库系统第一章 绪 论供应商供应商S S1 张三 北京 S2 李四 郑州S# SNAME SADDR零件零件P P1 电机 2000 P2 螺丝 2P# PNAME PRICE(联系)供应(联系)供应SP S1 P1 200 S1 P3 22S# P# QTY关系:关系:对应一张表,对应一张表,

26、每表起一个名称即关系名每表起一个名称即关系名元组:元组:表中的一行表中的一行属性:属性:表中一列,表中一列, 每列起一个名称即属性名每列起一个名称即属性名主码:主码:唯一确定一个元组的属唯一确定一个元组的属 性组性组域:域:属性的取值范围属性的取值范围2024/9/127数据库系统数据库系统第一章 绪 论(3)关系模式:对关系的描述,一般表示为:)关系模式:对关系的描述,一般表示为: 关系名(属性关系名(属性1,属性,属性2,属性,属性n)(4)优点:)优点: 无论实体还是实体之间的联系都用统一的数据结构无论实体还是实体之间的联系都用统一的数据结构(二维表、关系)来表示,可方便地表示(二维表、

27、关系)来表示,可方便地表示m:n联系,因此概联系,因此概念简单,用户易懂易用念简单,用户易懂易用 如:如:可表示为:可表示为: 学生(学号,姓名,性别,系和年级)学生(学号,姓名,性别,系和年级) 课程(课程号,课程名,学分)课程(课程号,课程名,学分) 选修(学号,课程号,成绩)选修(学号,课程号,成绩)学生学生选修选修课程课程mn 表格中行、列次序无关表格中行、列次序无关 有坚实的理论基础(关系理论)有坚实的理论基础(关系理论)2024/9/128数据库系统数据库系统第一章 绪 论 存取路径对用户透明,用户只需指出存取路径对用户透明,用户只需指出“做什么做什么”,不,不需说明需说明“怎么做

28、怎么做”,因此数据独立性更高,因此数据独立性更高 缺点:缺点:由于存取路径对用户透明,查询效率不够高,必由于存取路径对用户透明,查询效率不够高,必须对查询请求进行优化。须对查询请求进行优化。说明:说明: 关系必须规范化,关系的每个分量必须是一个不可分的关系必须规范化,关系的每个分量必须是一个不可分的数据项,不允许表中套表。规范化理论将在后续章节讲解。数据项,不允许表中套表。规范化理论将在后续章节讲解。(5)关系模型与非关系模型的比较)关系模型与非关系模型的比较 统一统一 不统一不统一均为关系均为关系实体及实体间联系实体及实体间联系采用的数据结构采用的数据结构操作方式操作方式存取路径存取路径关系

29、模型关系模型 非关系模型非关系模型对用户透明对用户透明 对用户不透明对用户不透明一次一集合一次一集合 一次一记录一次一记录2024/9/129数据库系统数据库系统第一章 绪 论三级模式三级模式(外模式、模式、内模式)(外模式、模式、内模式)两级映象两级映象(外模式(外模式/模式,模式模式,模式/内模式映象)内模式映象)一、一、DBS的三级模式结构的三级模式结构 1、模式模式(Schema):):又称又称逻辑模式逻辑模式。DB的全局逻辑结构的全局逻辑结构。 即即DB中全体数据的逻辑结构和特征的描述。中全体数据的逻辑结构和特征的描述。 说明说明 模式只涉及到型的描述,不涉及具体的值(实例),反映的

30、是模式只涉及到型的描述,不涉及具体的值(实例),反映的是数据的结构及其联系数据的结构及其联系 模式不涉及物理存储细节和硬件环境,也与应用程序无关模式不涉及物理存储细节和硬件环境,也与应用程序无关 模式承上启下,是模式承上启下,是DB设计的关键设计的关键 DBS提供模式提供模式DDL(Data Definition Language)来定义模式来定义模式(描述(描述DB结构)结构)3 3 DBSDBS的结构的结构2024/9/130数据库系统数据库系统第一章 绪 论 模式定义的任务模式定义的任务 (概念模型(概念模型 模式)模式) 定义全局逻辑结构(构成记录的属性名、类型、宽度等)定义全局逻辑结

31、构(构成记录的属性名、类型、宽度等) 定义有关的安全性、完整性要求定义有关的安全性、完整性要求 定义记录间的联系定义记录间的联系 一个数据库只有一个模式一个数据库只有一个模式2 、外模式外模式:又称:又称子模式子模式或或用户模式用户模式。DB的局部逻辑结构的局部逻辑结构。 即与某一应用有关的数据的一个逻辑表示。即与某一应用有关的数据的一个逻辑表示。 说明说明: 外模式是某个用户的数据视图,外模式是某个用户的数据视图, 模式是所有用户的公共数据视图模式是所有用户的公共数据视图; 一个一个DB只能有一个模式,但可以有多个外模式;只能有一个模式,但可以有多个外模式; 外模式通常是模式的子集,但可以在

32、结构、类型、长度等外模式通常是模式的子集,但可以在结构、类型、长度等方面有差异;方面有差异; DBS提供外模式提供外模式DDL。2024/9/131数据库系统数据库系统第一章 绪 论3、内模式内模式:又称:又称存储模式存储模式。数据的物理结构和存储方式的描述数据的物理结构和存储方式的描述。 即即DB中数据的内部表示方式。中数据的内部表示方式。 说明:说明: 一个数据库只有一个内模式一个数据库只有一个内模式 DBS提供内模式提供内模式DDL;内模式定义的任务内模式定义的任务记录存储格式记录存储格式,索引组织方式索引组织方式,数据是否压缩数据是否压缩、是否加密等是否加密等。4、两级映象及其作用、两

33、级映象及其作用 (1)外模式外模式/模式映象模式映象:定义外模式和模式间的对应关系。:定义外模式和模式间的对应关系。对应同一个模式可以有多个外模式,对每个外模式都有一个外对应同一个模式可以有多个外模式,对每个外模式都有一个外模式模式/模式映象。模式映象。 作用作用:模式变,可修改映象使外模式保持不变,从而应用程:模式变,可修改映象使外模式保持不变,从而应用程序不必修改,保证了程序和数据的逻辑独立性。序不必修改,保证了程序和数据的逻辑独立性。 2024/9/132数据库系统数据库系统第一章 绪 论 (2)模式模式/内模式映象内模式映象:定义:定义DB全局逻辑结构和存储结构间的全局逻辑结构和存储结

34、构间的对应关系。一个数据库只有一个模式,也只有一个内模式,因此对应关系。一个数据库只有一个模式,也只有一个内模式,因此模式模式/内模式的映象也是唯一的。内模式的映象也是唯一的。 作用作用:存储结构变,可修改映象使逻辑结构(模式)保持不变,:存储结构变,可修改映象使逻辑结构(模式)保持不变,从而应用程序不必修改,保证了数据与程序的物理独立性。从而应用程序不必修改,保证了数据与程序的物理独立性。2024/9/133数据库系统数据库系统第一章 绪 论4 数据库系统的组成数据库系统的组成1、数据库数据库:一个或多个数据库:一个或多个数据库 数据库的四要素:用户数据、元数据、索引和应用元数据数据库的四要

35、素:用户数据、元数据、索引和应用元数据2、 软件软件 操作系统;支持操作系统;支持DBMS的运行的运行 数据库管理系统数据库管理系统 DBMS(DataBase Management System):): 操纵和管理数据库的大型软件系统,是数据库系统的核心操纵和管理数据库的大型软件系统,是数据库系统的核心 数据库应用开发工具等辅助软件数据库应用开发工具等辅助软件 具有数据库接口的高级语言与编译系统,如具有数据库接口的高级语言与编译系统,如C、C+等等 某个数据库应用系统某个数据库应用系统一、数据库系统(一、数据库系统(DataBase System,DBS)的组成的组成 广义上讲,广义上讲,D

36、BS就是就是计算机系统中引进数据库后的构成计算机系统中引进数据库后的构成。 有下面四部分:有下面四部分:2024/9/134数据库系统数据库系统第一章 绪 论3、人员人员 用户用户 应用程序员应用程序员 数据库管理员数据库管理员DBA(使用)(使用) (开发)(开发)(管理)(管理) DBA(Data Base dministrator)的职责的职责: 决定数据库的内容和逻辑结构、存储结构决定数据库的内容和逻辑结构、存储结构 确定数据的安全性要求和完整性约束条件确定数据的安全性要求和完整性约束条件 监控数据库的使用和运行,维护数据库监控数据库的使用和运行,维护数据库 决定数据库的存储结构和存储

37、策略决定数据库的存储结构和存储策略 负责数据库的改进和重组重构负责数据库的改进和重组重构4、硬件硬件 计算机及有关设备,要求有足够大的内、外存储容量及较计算机及有关设备,要求有足够大的内、外存储容量及较高的处理速度。高的处理速度。2024/9/135数据库系统数据库系统第一章 绪 论数据库系统图示:数据库系统图示:用户用户1用户用户2用户用户n应用程序应用程序1应用程序应用程序m辅助软件辅助软件 DBMS 操作系统操作系统数据库数据库数据库数据库DBA负责负责 应用应用程序员程序员 2024/9/136数据库系统数据库系统第一章 绪 论二、二、数据库系统研究的对象数据库系统研究的对象 如何高效

38、巧妙地进行数据管理,而又如何高效巧妙地进行数据管理,而又花费最少花费最少如:占用空间少如:占用空间少 查询快查询快 维护方便等维护方便等三个主要研究领域三个主要研究领域: DBMS及其辅助软件及其辅助软件 数据库设计数据库设计 数据库理论数据库理论作业:作业:3,5,7,12,13,20,222024/9/137数据库系统数据库系统第二章 关系数据库本章要求:本章要求:本章内容:本章内容:请选择内容请选择内容返回返回1、掌握关系、关系模式、关系数据库等基本概念、掌握关系、关系模式、关系数据库等基本概念2、掌握关系的三类完整性的含义、掌握关系的三类完整性的含义3、掌握关系代数运算、掌握关系代数运

39、算1 关系模型的基本概念关系模型的基本概念2 RDBS的数据操纵语言:关系代数的数据操纵语言:关系代数3 RDBS的数据操纵语言:关系演算语言的数据操纵语言:关系演算语言2024/9/138数据库系统数据库系统第二章 关系数据库 层次、网状数据库层次、网状数据库是面向专业人员的,使用很不方便。是面向专业人员的,使用很不方便。程序员必须经过良好的培训,对所使用的系统有深入的了程序员必须经过良好的培训,对所使用的系统有深入的了解才能用好系统。解才能用好系统。 关系数据库关系数据库就是要解决这一问题,使它成为面向用户就是要解决这一问题,使它成为面向用户的系统。的系统。 关系数据库是应用数学方法来处理

40、数据的。它具有结关系数据库是应用数学方法来处理数据的。它具有结构简单、理论基础坚实、数据独立性高以及提供非过程性构简单、理论基础坚实、数据独立性高以及提供非过程性语言等优点。语言等优点。1 关系模型的基本概念关系模型的基本概念2024/9/139数据库系统数据库系统第二章 关系数据库一、关系的数学定义一、关系的数学定义 1、域域(Domain): 值的集合。它们具有相同的数据类型,值的集合。它们具有相同的数据类型,语义上通常指某一对象的取值范围。语义上通常指某一对象的取值范围。 例如:全体整数, 0到100之间的整数, 长度不超过10的字符串集合2、笛卡尔积笛卡尔积(Cartesian Pro

41、duct):设):设D1、D2、Dn是是n个域个域, 则它们的笛卡尔积为则它们的笛卡尔积为D1 D2 Dn=(d1,d2,dn) | di Di, i=1,2,n 其中每一个元素称为一个其中每一个元素称为一个n元组元组(n-tuple), 简称简称元组元组; 元组中的每个值元组中的每个值di称为一个称为一个分量分量(component).2024/9/140数据库系统数据库系统第二章 关系数据库笛卡尔积可以写成一个二维表笛卡尔积可以写成一个二维表例如:例如:设设 D1=张三,李四张三,李四, D2=数学,语文数学,语文, D3=优,良优,良则则D1D2D3可用二维表表示为:可用二维表表示为:张

42、三张三 数学数学 优优张三张三 数学数学 良良张三张三 语文语文 优优张三张三 语文语文 良良李四李四 数学数学 优优李四李四 数学数学 良良李四李四 语文语文 优优李四李四 语文语文 良良3、关系关系(Relation) 笛卡尔积笛卡尔积D1 D2 Dn的子集合,的子集合, 记作记作 R(D1,D2,Dn)关系名关系名n为关系的目或度为关系的目或度2024/9/141数据库系统数据库系统第二章 关系数据库4、说明、说明 关系是一个二维表。关系是一个二维表。 每行对应一个元组。每行对应一个元组。 每列可起一个名字,称为属性。属性的取值范围为一个每列可起一个名字,称为属性。属性的取值范围为一个域

43、,元组中的一个属性值是一个分量。域,元组中的一个属性值是一个分量。5、关系的性质、关系的性质 列是同质的,即每列中的数据必须来自同一个域列是同质的,即每列中的数据必须来自同一个域 每一列必须是不可再分的数据项(不允许表中套表,即每一列必须是不可再分的数据项(不允许表中套表,即满足第一范式)满足第一范式) 不能有相同的行不能有相同的行 行、列次序无关行、列次序无关2024/9/142数据库系统数据库系统第二章 关系数据库二、关系模型二、关系模型 三部分:关系数据结构、关系操作集合、关系的完整性三部分:关系数据结构、关系操作集合、关系的完整性 (一)数据结构(一)数据结构 1、单一的数据结构:关系

44、(二维表)、单一的数据结构:关系(二维表) 不论是实体还是实体间的联系都用关系表示不论是实体还是实体间的联系都用关系表示。 实体值实体值 关系的元组,在关系数据库中通常称为关系的元组,在关系数据库中通常称为记录记录 属性值属性值 元组的分量,在关系数据库中通常称为元组的分量,在关系数据库中通常称为字段字段 关键字(码):唯一标识一个元组的属性组关键字(码):唯一标识一个元组的属性组 关键字可以有多个,统称关键字可以有多个,统称候选关键字候选关键字。在使用时,通。在使用时,通常选定一个作为常选定一个作为主关键字主关键字。主关键字的诸属性称为。主关键字的诸属性称为主属主属性性,其它为,其它为非主属

45、性非主属性。2024/9/143数据库系统数据库系统第二章 关系数据库关系数据库模式关系数据库模式:对关系数据库的描述,包括域:对关系数据库的描述,包括域的定义及在域上定义的所有关系模式。的定义及在域上定义的所有关系模式。关系数据库关系数据库:所有实体及实体间联系的关系的集:所有实体及实体间联系的关系的集合。是某时刻所有关系模式对应的关系的集合。合。是某时刻所有关系模式对应的关系的集合。2、关系模式:、关系模式:关系的描述关系的描述。包括关系名、诸属性名、属性向域的映象、属性间的依赖。包括关系名、诸属性名、属性向域的映象、属性间的依赖。关系的型关系的型一个元组为关系的一个值一个元组为关系的一个

46、值表示:表示: R(U,D,dom,F)属性的类型、长度等属性的类型、长度等值值型型2024/9/144数据库系统数据库系统第二章 关系数据库3、关系的三种类型、关系的三种类型 基本关系:客观存在的基本表基本关系:客观存在的基本表 查询表:由基本表按一定条件检索得到的结果查询表:由基本表按一定条件检索得到的结果 视图视图(View):): 从一个或多个基本关系上导出的关系从一个或多个基本关系上导出的关系。它。它不对应实际的存储数据,是一个虚关系,然而可永久存在。不对应实际的存储数据,是一个虚关系,然而可永久存在。相当于关系模型的外模式。相当于关系模型的外模式。 由于二维表的存储策略非常简单,关

47、于数据库的物理由于二维表的存储策略非常简单,关于数据库的物理存储完全由存储完全由DBMS自动完成。因此,在关系模型中不需要自动完成。因此,在关系模型中不需要与内模式相应的概念。与内模式相应的概念。2024/9/145数据库系统数据库系统第二章 关系数据库(二)关系操作(二)关系操作 1、种类:选择、投影、连接、除、并、交、差、种类:选择、投影、连接、除、并、交、差 增加、删除、修改增加、删除、修改 查询操作查询操作维护操作维护操作一次一集合(关系型)一次一集合(关系型)一次一记录(非关系型)一次一记录(非关系型) 非过程化语言:用户只需告诉做什么(非过程化语言:用户只需告诉做什么(What)

48、不需告诉怎么做(不需告诉怎么做(How) 数据定义、数据操纵、数据控制语言集成在一起数据定义、数据操纵、数据控制语言集成在一起DDLDMLDCL:权限控制、完整性控制等:权限控制、完整性控制等2、特点:、特点: 集合操作,一次操作集合操作,一次操作 可存取多个元组可存取多个元组2024/9/146数据库系统数据库系统第二章 关系数据库(三)关系模型的三类完整性(三)关系模型的三类完整性 1、实体完整性实体完整性(Entity Integrity) 基本关系的所有主属性不能取空值基本关系的所有主属性不能取空值 原因:基本关系原因:基本关系 实体集实体集实体必可区分实体必可区分(标识符)(标识符)

49、 主关键字是主关键字是唯一性标识,唯一性标识,故不能空故不能空2、参照完整性参照完整性(Referential Integrity),也叫),也叫引用完整性引用完整性 若基本关系若基本关系R含有与另一个基本关系含有与另一个基本关系S的主关键字相对的主关键字相对应的属性组应的属性组F(F称为称为R的的外键外键或或外部码外部码),则),则R中每个元组中每个元组在在F上的值或为空值,或等于上的值或为空值,或等于S中某个元组的主关键字值。中某个元组的主关键字值。2024/9/147数据库系统数据库系统第二章 关系数据库例:例: 职工关系职工关系 EMP(ENO,ENAME,DNO) 部门关系部门关系

50、DEPT(DNO,DNAME)DEPT的主键的主键EMP的外键,的外键,只能取空值只能取空值或或DEPT中中某关键字的某关键字的值值又如:学生关系(又如:学生关系(SNO,SNAME,AGE,SEX) 课程关系(课程关系(CNO,CNAME) 选课关系(选课关系(SNO,CNO,G)3、用户定义的完整性用户定义的完整性 用户定义的某一属性值必须满足的语义要求。用户定义的某一属性值必须满足的语义要求。 一经定义,一经定义,DBMS会自动检查,从而不必在应用程序中会自动检查,从而不必在应用程序中作检查。作检查。本节开头本节开头下一节下一节本章开头本章开头2024/9/148数据库系统数据库系统第二

51、章 关系数据库 3、差(、差(Difference):): R S = t | tRtSRtS 一、传统的集合运算一、传统的集合运算 1、并(、并(Union):): R S = t | tRtSRtS 2、交(、交(Intersection):):R S = t | tRtSRtS 2 RDBS的数据操纵语言:关系代数的数据操纵语言:关系代数 关系代数的运算对象是关系,运算结果也为关系。关系代数的运算对象是关系,运算结果也为关系。其运算按运算符的不同可分为两类。其运算按运算符的不同可分为两类。4、笛卡尔积(广义):、笛卡尔积(广义): R S = trts | tr R ts S2024/9

52、/149数据库系统数据库系统第二章 关系数据库二、专门的关系运算二、专门的关系运算 1、选择选择(Selection),又称限制(),又称限制(Restriction) (R):F在关系在关系R中选出满足条件中选出满足条件F的诸元组形成一个新的诸元组形成一个新关系。关系。条件表达式条件表达式2、投影投影(Projection) (R)A:在:在R中选出若干属性列组成一个新关系。中选出若干属性列组成一个新关系。属性组属性组投影后若有重复行,则自动保留一个投影后若有重复行,则自动保留一个从行的角度的运算从行的角度的运算从列的角度的运算从列的角度的运算2024/9/150数据库系统数据库系统第二章

53、关系数据库当当 为等号且为等号且A、B两属性相同时,称为两属性相同时,称为自然连接自然连接,记作记作3、连接(、连接(Join)R SA B:从两个关系的笛卡尔积中选取属性间:从两个关系的笛卡尔积中选取属性间 满足条件满足条件A B的元组。的元组。R中属性中属性S中属性中属性比较运算符比较运算符说明:说明:R SA B= (R S)A B R S自然连接将去掉重复属性自然连接将去掉重复属性连接是同时处理连接是同时处理 多个关系的多个关系的 重要运算重要运算若仅有若仅有 为等号的条件为等号的条件,称为称为等值连接等值连接2024/9/151数据库系统数据库系统第二章 关系数据库?4、除除(Div

54、ision) R(X,Y) S(Y,Z):把):把R按按X的值分组,若某一组的值分组,若某一组 中属性组中属性组Y的值包含的值包含S在在Y上投影的全部上投影的全部 元组,则该元组,则该X的值作为的值作为 商关系的一个元组商关系的一个元组属性组属性组例:求至少选修例:求至少选修C1、C3课程的学生号码课程的学生号码设一临时关系设一临时关系K:C#C1C3关系代数表达式关系代数表达式 (SC) K = S#,C# S1, S# C# GS1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C1 BS4 C3

55、 ASC:按按S1分组分组2024/9/152数据库系统数据库系统第二章 关系数据库 S1, S1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C1 BS4 C3 A4、除除(Division) R(X,Y) S(Y,Z):把):把R按按X的值分组,若某一组的值分组,若某一组 中属性组中属性组Y的值包含的值包含S在在Y上投影的全部上投影的全部 元组,则该元组,则该X的值作为的值作为 商关系的一个元组商关系的一个元组属性组属性组例:求至少选修例:求至少选修C1、C3课程的学生号码课程的学生号码设一临时

56、关系设一临时关系K:C#C1C3关系代数表达式关系代数表达式 (SC) K = S#,C#S# C# GSC:按按S2分组分组2024/9/153数据库系统数据库系统第二章 关系数据库S1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C1 BS4 C3 A S1, 4、除除(Division) R(X,Y) S(Y,Z):把):把R按按X的值分组,若某一组的值分组,若某一组 中属性组中属性组Y的值包含的值包含S在在Y上投影的全部上投影的全部 元组,则该元组,则该X的值作为的值作为 商关系的一个元组商

57、关系的一个元组属性组属性组例:求至少选修例:求至少选修C1、C3课程的学生号码课程的学生号码设一临时关系设一临时关系K:C#C1C3关系代数表达式关系代数表达式 (SC) K = S#,C#S# C# GSC:按按S3分组分组2024/9/154数据库系统数据库系统第二章 关系数据库 S1, 4、除除(Division) R(X,Y) S(Y,Z):把):把R按按X的值分组,若某一组的值分组,若某一组 中属性组中属性组Y的值包含的值包含S在在Y上投影的全部上投影的全部 元组,则该元组,则该X的值作为的值作为 商关系的一个元组商关系的一个元组属性组属性组例:求至少选修例:求至少选修C1、C3课程

58、的学生号码课程的学生号码设一临时关系设一临时关系K:C#C1C3关系代数表达式关系代数表达式 (SC) K = S#,C#S# C# GSC:按按S4分组分组 S1, S4 S1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C1 BS4 C3 A2024/9/155数据库系统数据库系统第二章 关系数据库三、关系代数运算举例三、关系代数运算举例S: S# SN SD SAS1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22C: C#

59、CN PC#C1 G C2 H C1C3 I C2C4 J C2C5 K C4SC:S# C# GS1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C2 BS4 C5 DS5 C2 CS5 C3 BS5 C5 BS6 C1 AS6 C5 A 求至少选修这样一求至少选修这样一门课的学生姓名,这门门课的学生姓名,这门课的直接先行课是课的直接先行课是C2 先找出先行课为先找出先行课为C2的课程号:的课程号: (C),),记为PCPC#=C2 找选修该类课程的学生学号:找选修该类课程的学生学号:记为PCSP

60、C (SC)S#,C# 找出学生姓名:找出学生姓名:PCS (S)S#,SN ( )SN2024/9/156数据库系统数据库系统第二章 关系数据库本节开头本节开头下一节下一节本章开头本章开头最终的关系代数表达式最终的关系代数表达式: ( )SN (S)S#,SN (C)PC#=C2 (SC)S#,C#PCPCS说明:说明: 用关系代数表示查询时,若查询涉及多个关系,需用连用关系代数表示查询时,若查询涉及多个关系,需用连接操作实现;若查询诸如接操作实现;若查询诸如“选修了全部课程选修了全部课程”的学生、的学生、“使使用了全部零件用了全部零件”的工程等,需用除法操作实现。的工程等,需用除法操作实现

61、。作业:作业:1,4,5,62024/9/157数据库系统数据库系统第二章 关系数据库一、元组关系演算一、元组关系演算 1、元组关系演算表达式:、元组关系演算表达式:关系演算:基于谓词演算关系演算:基于谓词演算面向元组:谓词变量的获得值是关系中的元组面向元组:谓词变量的获得值是关系中的元组 (元组变量)(元组变量)面向域:谓词变量的获得值是关系中某属性的值面向域:谓词变量的获得值是关系中某属性的值 (域变量)(域变量)按谓词变量按谓词变量的特征划分的特征划分 t | (t) 公式公式t为元组变量为元组变量 运算的结果运算的结果还是一个关系还是一个关系3 RDBS的数据操纵语言:关系演算语言的数

62、据操纵语言:关系演算语言2024/9/158数据库系统数据库系统第二章 关系数据库2、原子公式、原子公式 R (t): 表示表示t是关系是关系R中的一个元组中的一个元组 ti uj: 表示表示t的第的第i个分量和个分量和u的第的第j个分量满足比较关系个分量满足比较关系 ti C 或或 C ti :含义同上含义同上,只不过只不过C为常量为常量3、公式的递归定义、公式的递归定义 (1)每个每个原子公式原子公式是一个公式;是一个公式; (2)设设 1、 2是公式,则是公式,则 1、 1 2、 1 2 也是公式;也是公式; (3)设设 是公式,是公式,t是元组变量,则是元组变量,则 ( t) 、 (

63、t) 也是公式;也是公式; (4)除此之外没有其它形式的公式。除此之外没有其它形式的公式。2024/9/159数据库系统数据库系统第二章 关系数据库4、关系代数运算均可用关系演算来表示,反之亦然、关系代数运算均可用关系演算来表示,反之亦然 见教材见教材P71。S: S# SN SD SA5、用关系演算来表达查询、用关系演算来表达查询 例例1,求年龄大于或等于,求年龄大于或等于20的学生:的学生:S1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22S20 = t | S(t) t4 20 例例2,求学生姓名及所在的系:,求学生姓

64、名及所在的系:S1= t (2) | ( u )(S(u) t1=u2 t2=u3 )S1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 222024/9/160数据库系统数据库系统第二章 关系数据库二、未实现的元组关系演算语言二、未实现的元组关系演算语言ALPHA E. F. Codd提出,但并未实现。提出,但并未实现。 1、检索操作(、检索操作(GET) (1)不设元组变量)不设元组变量例:取出计算机系学生的学号:例:取出计算机系学生的学号:工作空间名工作空间名表达式表达式限定条件限定条件GET W (S.S#): S.SD=

65、CS2024/9/163数据库系统数据库系统第二章 关系数据库二、未实现的元组关系演算语言二、未实现的元组关系演算语言ALPHA E. F. Codd提出,但并未实现。提出,但并未实现。 1、检索操作(、检索操作(GET) (1)不设元组变量)不设元组变量例:取出计算机系学生的学号:例:取出计算机系学生的学号:相当于原子公式相当于原子公式ti CGET W (1) (S.S#): S.SD=CS(事实上关系名起到元组变量的作用事实上关系名起到元组变量的作用)相当于投影相当于投影取出取出一个一个计算机系学生的学号计算机系学生的学号GET W (S.S#): S.SD=CS定额定额2024/9/1

66、64数据库系统数据库系统第二章 关系数据库(2) 使用元组变量使用元组变量 应用场合应用场合用较短的名字代替较长的关系名用较短的名字代替较长的关系名使用量词时使用量词时例例 查找不选查找不选C1课程的学生姓名课程的学生姓名RANGE SC XGET W (S.SN): X(X.S# S.S# X.C# C1) 查找选修全部课程的学生姓名查找选修全部课程的学生姓名RANGE C CXRANGE SC SCXGET W(S.SN): CX SCX(SCX.S# =S.S# SCX.C# =CX.C#)变量范围说明变量范围说明关系名关系名元组变量元组变量2024/9/165数据库系统数据库系统第二章

67、 关系数据库2、存储操作、存储操作 (1)修改:)修改:UPDATE (2)插入:)插入:PUT (3)删除:)删除:DELETE参阅教材参阅教材P67-P69。关键字不能修改,关键字不能修改,只能先删除、再插入只能先删除、再插入2024/9/166数据库系统数据库系统第二章 关系数据库四、域关系演算语言四、域关系演算语言QBE QBE是是Query By Example 的缩写,的缩写,1978年在年在IBM370上上实现。实现。 1、特点、特点 用户通过表格形式提出查询,查询结果也通过表格显示用户通过表格形式提出查询,查询结果也通过表格显示出来出来 用户容易掌握,易学易用用户容易掌握,易学

68、易用三、域关系演算三、域关系演算 与元组关系演算类似,只不过这里的变量取值范围是属与元组关系演算类似,只不过这里的变量取值范围是属性值,其谓词变元称作欲变量,关系的属性名可视作欲变量。性值,其谓词变元称作欲变量,关系的属性名可视作欲变量。 关系代数、元组关系演算、域关系演算的表达能力是关系代数、元组关系演算、域关系演算的表达能力是等价的。等价的。2024/9/167数据库系统数据库系统第二章 关系数据库2、使用方法使用方法 (1) 用户提出使用要求(如键入某一命令)用户提出使用要求(如键入某一命令) (2) 机器显示空白表格机器显示空白表格(3) 用户输入关系名用户输入关系名 如如 学生关系学

69、生关系 SS(4)机器自动显示属性名)机器自动显示属性名S#SNSDSA2024/9/168数据库系统数据库系统第二章 关系数据库2、使用方法使用方法 (1) 用户提出使用要求(如键入某一命令)用户提出使用要求(如键入某一命令) (2) 机器显示空白表格机器显示空白表格(3) 用户输入关系名用户输入关系名 如如 学生关系学生关系 S(4) 机器自动显示属性名机器自动显示属性名SS#SNSDSA(5) 提出查询要求提出查询要求 如如 查询计算机系查询计算机系 的学生姓名和年龄的学生姓名和年龄P.张三张三CSP.30查询条件查询条件SD=CSP.是操作符是操作符示例元素示例元素(任选一个可能的值任

70、选一个可能的值)2024/9/169数据库系统数据库系统第二章 关系数据库SS#SNSDSA3、其他例子、其他例子: (1)查询操作)查询操作例例1:查计算机系年龄大:查计算机系年龄大于于19的学生姓名的学生姓名P.张三张三CS19SS#SNSDSAP.张三张三CS19P.张三张三 两个条件写两行两个条件写两行, 示例元素示例元素相同相同, 表示表示条件之间是条件之间是“与与”的关的关系系SS#SNSDSAP.张三张三CS19P.李四李四 示例元素示例元素不同不同, 表示表示条件之间是条件之间是“或或”的关系的关系例例2:查计算机系或年龄:查计算机系或年龄大于大于19的学生姓名的学生姓名202

71、4/9/170数据库系统数据库系统第二章 关系数据库例例3:查选修:查选修C2的学生名字的学生名字(涉及两个关系,需要连接操作)(涉及两个关系,需要连接操作)SS#SNSDSAP.张三张三S1SCS#C#GS1C2 不同关系中的不同关系中的两个示例元素相同,两个示例元素相同,表示了连接操作。表示了连接操作。2024/9/171数据库系统数据库系统第二章 关系数据库(2) 修改操作修改操作 修改操作符为修改操作符为“U.”,不允许修改主码,若要修改主码,不允许修改主码,若要修改主码,需先删除元组,再插入。需先删除元组,再插入。SS#SNSDSAU. CSS1SS#SNSDSACSS1U.修改操作

72、不包含表修改操作不包含表达式,可有两种表达式,可有两种表示方法。示方法。例例2:将计算机系所有:将计算机系所有学生的年龄增加学生的年龄增加1岁。岁。SS#SNSDSACSS1U.例例1:把学号为:把学号为S1的学的学生转入计算机系。生转入计算机系。19S119+12024/9/172数据库系统数据库系统第二章 关系数据库(3) 插入操作插入操作操作符为操作符为“I.”,新元组必须包含码,其他属性值可为空。,新元组必须包含码,其他属性值可为空。SS#SNSDSACSS8I.19美丽美丽例:例:(4)删除操作)删除操作操作符为操作符为“D.”。例:删除计算机系例:删除计算机系的学生。的学生。SS#

73、SNSDSACSD.2024/9/173数据库系统数据库系统第三章 关系数据库标准语言SQL本章要求:本章要求:本章内容:本章内容:请选择内容请选择内容返回返回1、掌握、掌握SQL定义基本表和建立索引的方法定义基本表和建立索引的方法2、掌握、掌握SQL中各种查询方法和数据更新方法中各种查询方法和数据更新方法3、掌握、掌握SQL中视图的定义方法和用法中视图的定义方法和用法4、掌握、掌握SQL的授权机制的授权机制5、了解嵌入式、了解嵌入式SQL的基本使用方法的基本使用方法1 SQL概述概述2 SQL数据定义功能数据定义功能3 SQL数据操纵功能数据操纵功能4 视图视图5 SQL数据控制功能数据控制

74、功能6 嵌入式嵌入式SQL2024/9/174数据库系统数据库系统第三章 关系数据库标准语言SQL一、一、SQL 的发展的发展 SQL是是 Structured Query Language的缩写的缩写 (ANSI解释为解释为Standard Query Language) 74年年 Boyce &Chambarlin提出,在提出,在IBM的的System R上上 首先实现首先实现79年年 Oracle82年年 IBM的的DB284年年 Sybase采用采用SQL作为数据库语言作为数据库语言1 SQL概述概述2024/9/175数据库系统数据库系统第三章 关系数据库标准语言SQL二、二、SQL

75、的主要特点的主要特点1、一体化:一体化:两方面两方面 集集DDL、DML、DCL为一体为一体 实体和联系都是关系,因此每种操作只需一种操作符实体和联系都是关系,因此每种操作只需一种操作符86年年10月月 成为美国国家标准成为美国国家标准87年年 国际标准化组织(国际标准化组织(ISO)采纳为国际标准)采纳为国际标准89年年 ISO推出推出SQL8992年年 ISO推出推出SQL2目前正制定目前正制定SQL3标准标准2024/9/176数据库系统数据库系统第三章 关系数据库标准语言SQL2、高度非过程化语言高度非过程化语言 (WHAT HOW )3、面向集合的操作方式(一次一集合)面向集合的操作

76、方式(一次一集合)4、交互式和嵌入式两种使用方式,统一的语法结构交互式和嵌入式两种使用方式,统一的语法结构5、语言简洁,易学易用语言简洁,易学易用 完成核心功能只有完成核心功能只有9个动词:个动词:数据查询:数据查询: SELECT数据定义:数据定义: CREATE,DROP,ALTER数据操纵:数据操纵: INSERT,DELETE,UPDATE数据控制:数据控制: GRANT,REVOKE6、支持三级模式结构支持三级模式结构 视图视图 外模式外模式 基本表(的集合)基本表(的集合) 模式模式 存储文件和索引存储文件和索引 内模式内模式2024/9/177数据库系统数据库系统第三章 关系数据

77、库标准语言SQLSQL支持的三级模式结构支持的三级模式结构用户用户SQLView V1View V2Base table B1Base table B2Base table B3Base table B4Stored file S1Stored file S2外模式外模式模式模式内模式内模式2024/9/178数据库系统数据库系统第三章 关系数据库标准语言SQL 说明:说明: 基本表是独立存在的表。一个关系对应一个表。一个基本表是独立存在的表。一个关系对应一个表。一个(或多个)表对应一个存储文件,每个表可有若干索引,(或多个)表对应一个存储文件,每个表可有若干索引,这些索引也可放在存储文件中。

78、这些索引也可放在存储文件中。 对内模式,只需定义索引,其余的一切均有对内模式,只需定义索引,其余的一切均有DBMS自自动完成动完成本节开头本节开头下一节下一节本章开头本章开头 视图是从一个或几个基本表中导出的表,概念上同基视图是从一个或几个基本表中导出的表,概念上同基本表。但它并不真正存储数据,也不独立存在,它依赖本表。但它并不真正存储数据,也不独立存在,它依赖于导出它的基本表,数据也存放在原来的基本表中。于导出它的基本表,数据也存放在原来的基本表中。2024/9/179数据库系统数据库系统第三章 关系数据库标准语言SQL 三部分:三部分: 定义和修改基本表定义和修改基本表(定义模式):(定义

79、模式):CREATE TABLE DROP TABLE ALTER TABLE 定义视图定义视图(定义外模式):(定义外模式):CREATE VIEW DROP VIEW 定义索引定义索引(定义内模式):(定义内模式): CREATE INDEX DROP INDEX说明:视图是从基本表导出的虚表,索引依赖于基本表,说明:视图是从基本表导出的虚表,索引依赖于基本表,SQL没有修改视图和索引的操作,可通过先删除,再创建没有修改视图和索引的操作,可通过先删除,再创建达此目的。达此目的。2 SQL数据定义功能数据定义功能2024/9/180数据库系统数据库系统第三章 关系数据库标准语言SQL示例示例

80、CREATE TABLE S( S# CHAR(3) NOT NULL UNIQUE, SN CHAR(15),), SD CHAR(15),), SA SMALLINT););一、基本表的定义和修改一、基本表的定义和修改1、定义定义:基本格式为:基本格式为 CREATE TABLE 表名(列名表名(列名1 类型类型 列级完整性约束列级完整性约束 ,列名,列名2 类型类型 列级完整性约束列级完整性约束););不允许取空值不允许取空值取值唯一取值唯一说明:说明: 注意注意SQL语句的书写格式语句的书写格式 SQL支持空值的概念。支持空值的概念。允许空值的列未输入数据时系统允许空值的列未输入数据时

81、系统自动置为空值自动置为空值。 SQL支持的数据类型随系统不同而有所差异。支持的数据类型随系统不同而有所差异。2024/9/181数据库系统数据库系统第三章 关系数据库标准语言SQL2、修改基本表修改基本表 (1)增加增加列:列: ALTER TABLE 表名表名 ADD 列名列名 类型类型 完整性约束完整性约束; (2)修改修改列列 ALTER TABLE 表名表名 MODIFY 列名列名 类型;类型; (3)删除删除完整性约束完整性约束 ALTER TABLE 表名表名 DROP 完整性约束名;完整性约束名;如如 ALTER TABLE S MODIFY SD CHAR(20)如如 ALT

82、ER TABLE S ADD SD INT;不支持不支持NOT NULL选择选择注意注意:不能删除列,新增列的值一律为空值,:不能删除列,新增列的值一律为空值,可增加列宽,但一般不能减小列宽,修改可能可增加列宽,但一般不能减小列宽,修改可能会破坏已有数据。会破坏已有数据。在定义基本表时要考虑充分在定义基本表时要考虑充分2024/9/182数据库系统数据库系统第三章 关系数据库标准语言SQL3、删除删除: DROP TABLE 表名;表名;注意:注意:删除基本表时,表中的数据、建立在表上的删除基本表时,表中的数据、建立在表上的索引和视图将一并被删除,因此应格外小心。索引和视图将一并被删除,因此应

83、格外小心。二、索引的建立和删除二、索引的建立和删除 由由DBA或表的属主进行,存取数据时由系统自动选或表的属主进行,存取数据时由系统自动选取合适的索引作为存取路径,用户不必也不能选择索引。取合适的索引作为存取路径,用户不必也不能选择索引。2024/9/183数据库系统数据库系统第三章 关系数据库标准语言SQL1、建立建立 CREATE UNIQUE CLUSTER INDEX 索引名索引名 ON 表名(列名表名(列名 如如 CREATE UNIQUE INDEX XSNO ON S(S#);); CREATE UNIQUE INDEX SCNO ON SC(SNO ASC,CNO DESC);

84、);升序或降序升序或降序缺省为升序缺省为升序2、删除删除 DROP INDEX 索引名;索引名; ASCDESC,列名,列名 ASCDESC););一个索引项值仅对应唯一的数据记录一个索引项值仅对应唯一的数据记录改变记录的物理顺序使之与索引项值的排列顺序改变记录的物理顺序使之与索引项值的排列顺序相同,称为聚簇索引。显然一个表只能建立一个相同,称为聚簇索引。显然一个表只能建立一个聚簇索引。可通过在经常查询而改动小的表上建聚簇索引。可通过在经常查询而改动小的表上建立这种索引来提高查询效率。立这种索引来提高查询效率。2024/9/184数据库系统数据库系统第三章 关系数据库标准语言SQL 查询是数据

85、库的核心操作。查询是数据库的核心操作。SQL仅提供了唯一的仅提供了唯一的语句语句SELECT,其使用方式灵活,功能非常丰富。其使用方式灵活,功能非常丰富。1、一般格式、一般格式SELECT ALL | DISTINCT * | 目标列目标列FROM 基本表(或视图)基本表(或视图) WHERE 条件表达式条件表达式 GROUP BY 列名列名1 HAVING 内部函数表达式内部函数表达式 ORDER BY 列名列名2 ; ASCDESC相当于投影相当于投影相当于选择或连接相当于选择或连接被查询的关系被查询的关系对查询结果排序对查询结果排序分组分组统计统计3 SQL数据操纵数据操纵-查询查询全部

86、字段全部字段满足条件的组才输出满足条件的组才输出细节见细节见P1152024/9/185数据库系统数据库系统第三章 关系数据库标准语言SQL2、简单查询、简单查询例例1:求选修了课程的学生学号:求选修了课程的学生学号SELECT DISTINCT S#FROM SC;从结果中去掉重复的元组从结果中去掉重复的元组例例2:SELECT的后面可以是表达式的后面可以是表达式。 如求计算机系学生的学号和出生年份:如求计算机系学生的学号和出生年份: SELECT S#,Birthday:,2000-SA FROM S WHERE SD=CS;例例3:连续范围查询,:连续范围查询,使用使用BETWEEN (

87、NOT BETWEEN)SELECT S#,SAFROM SWHERE SA BETWEEN 20 AND 22;即求即求20到到22岁之间岁之间的学生学号和年龄的学生学号和年龄2024/9/186数据库系统数据库系统第三章 关系数据库标准语言SQL例例4:离散范围查询,使用:离散范围查询,使用 IN (NOT IN)SELECT *FROM SWHERE SD IN (MA,CS););相当于若干相当于若干OR的缩写的缩写星号表示无投影星号表示无投影SD=MA OR SD=CS2024/9/187数据库系统数据库系统第三章 关系数据库标准语言SQL2、简单查询、简单查询例例1:求选修了课程的

88、学生学号:求选修了课程的学生学号SELECT DISTINCT S#FROM SC;从结果中去掉重复的元组从结果中去掉重复的元组例例2:SELECT的后面可以是表达式的后面可以是表达式。 如求计算机系学生的学号和出生年份:如求计算机系学生的学号和出生年份: SELECT S#,Birthday:,1998-SA FROM S WHERE SD=CS;例例3:连续范围查询,:连续范围查询,使用使用BETWEEN (NOT BETWEEN)SELECT S#,SAFROM SWHERE SA BETWEEN 20 AND 22;相当于若干相当于若干 AND 的缩写的缩写SA=20 AND SA 、

89、=、=、=20;2024/9/1114数据库系统数据库系统第三章 关系数据库标准语言SQL5、库函数(聚集函数)、库函数(聚集函数) COUNT 统计一列中的(统计一列中的(NOT NULL)值的个数)值的个数 COUNT(*) 计算记录个数计算记录个数 SUM 对一列求和对一列求和 AVG 对一列求平均值对一列求平均值 MAX 对一列求最大值对一列求最大值 MIN 对一列求最小值对一列求最小值重复的只记一个重复的只记一个SELECT COUNT(DISTINCT S#) FROM SC;例例1:求选修了课程的学生人数:求选修了课程的学生人数2024/9/1115数据库系统数据库系统第三章 关

90、系数据库标准语言SQL例例2 分组统计:分组统计:使用使用GROUP BY 求选修各门课程的学生人数求选修各门课程的学生人数 SELECT C#,COUNT(S#) FROM SC GROUP BY C#; 将表按列的值分组,列将表按列的值分组,列的值相同的分在一组,产生的值相同的分在一组,产生一个结果行。一个结果行。GROUP BY常常和库函数一起使用,用于分和库函数一起使用,用于分组统计。组统计。目标列中没有作用库目标列中没有作用库函数的列必须出现在函数的列必须出现在GROUP BY中,并且中,并且先按第一列的值分组,先按第一列的值分组,第一列值相同的再按第一列值相同的再按第二列分组,依次

91、类第二列分组,依次类推。推。这里,实际上仅需按这里,实际上仅需按C#分组分组 即可,不必即可,不必再按再按CN分组,为此分组,为此可用可用MIN函数作用之。函数作用之。因为同一分组中因为同一分组中C#相同,相同,CN也相同。也相同。上例中,如果要求显上例中,如果要求显示课程名称,则可以示课程名称,则可以SELECT SC.C#,C.CN, COUNT(S#) FROM SC, C WHERE SC.C#=C.C# GROUP BY SC.C#, CN;SELECT SC.C#,MIN(C.CN), COUNT(S#) FROM SC, C WHERE SC.C#=C.C# GROUP BY S

92、C.C#;2024/9/1116数据库系统数据库系统第三章 关系数据库标准语言SQL假定假定SC中的中的G用百分制表示,求最低成绩不低于用百分制表示,求最低成绩不低于85分,平均分,平均成绩不低于成绩不低于90分的学生学号和姓名,并按学号降序排序。分的学生学号和姓名,并按学号降序排序。SELECT SC.S#,MIN(S.SN) FROM S,SCWHERE S.S#=SC.S#GROUP BY SC.S#HAVING MIN(SC.G)=85 AND AVG(SC.G)=90ORDER BY SC.S# DESC;例例3 带条件的分组查询、统计:带条件的分组查询、统计:使用使用HAVING求

93、选修课程超过求选修课程超过3门的学生学号门的学生学号 SELECT S# FROM SC GROUP BY S# HAVING COUNT(*)3;HAVING是选择分组的条件且是选择分组的条件且必须和必须和GROUP BY一起使用一起使用WHERE是选择记录的条件;是选择记录的条件; 通过一个库函数,通过一个库函数,使之可不必出现在使之可不必出现在GROUP BY中中建立两个表的连接建立两个表的连接按学号分组按学号分组过滤分组,可用过滤分组,可用库函数多次作用库函数多次作用同一字段同一字段按学号降序排序按学号降序排序库函数只能作用于库函数只能作用于HAVING和和目标列,而不能用于目标列,而

94、不能用于WHERE。2024/9/1117数据库系统数据库系统第三章 关系数据库标准语言SQL4 SQL数据操纵数据操纵-数据更新数据更新一、插入数据一、插入数据1、插入单个元组、插入单个元组 INSERT INTO 表名表名 (字段名(字段名 ,字段名,字段名 VALUES (常量(常量 ,常量,常量 ;例例1:插入一条选课记录(:插入一条选课记录(S1,C5)。)。 INSERT INTO SC(S#,C#) VALUES(S1,C1););2024/9/1118数据库系统数据库系统第三章 关系数据库标准语言SQL说明:说明: 当在当在INTOINTO后面仅指定部分属性列时,插入记录后其它

95、后面仅指定部分属性列时,插入记录后其它列的值为空值;列的值为空值; 如果如果INTOINTO后面没有指定属性列,则必须按表列的定义后面没有指定属性列,则必须按表列的定义次序为每个列指定一个值;次序为每个列指定一个值; 具有具有NOT NULLNOT NULL属性的列,必须指定值。属性的列,必须指定值。2、插入子查询结果、插入子查询结果 INSERT INTO 表名表名 (字段名(字段名 ,字段名,字段名 子查询;子查询;2024/9/1119数据库系统数据库系统第三章 关系数据库标准语言SQL例例2:求每个学生的平均成绩,并按学号、姓名、平均成:求每个学生的平均成绩,并按学号、姓名、平均成 绩

96、存入数据库。(设成绩绩存入数据库。(设成绩G是数值型)是数值型)先创建一个表先创建一个表CREATE TABLE AG(S# CHAR(8),), SN CHAR(8),), AG SMALLINT););将计算结果插入上表中将计算结果插入上表中INSERTINTO AG(S#,SN,AG) SELECT S.S#,MIN(SN),AVG(G) FROM S,SC WHERE S.S# = SC.S# GROUP BY S.S# ;为什么用为什么用MIN()函数()函数?2024/9/1120数据库系统数据库系统第三章 关系数据库标准语言SQL二、修改数据二、修改数据 UPDATE 表名表名

97、SET 列名列名 = 表达式表达式,列名,列名 = 表达式表达式 WHERE 条件条件;说明:说明: 当省略当省略WHERE子句时,修改表中所有记录,否则仅子句时,修改表中所有记录,否则仅修改满足条件的记录;修改满足条件的记录; 条件也可以使用子查询。条件也可以使用子查询。例例1:将所有学生的年龄增加:将所有学生的年龄增加1岁。岁。 UPDATE S SET SA = SA +1 ; 2024/9/1121数据库系统数据库系统第三章 关系数据库标准语言SQLUPDATE SCSET G=0WHERE S# IN ( SELECT S# FROM S WHERE SD=MA );对对SC中的每个

98、选课单,检中的每个选课单,检查其对应学生所在的系是查其对应学生所在的系是否否MA。找出找出MA系的所有学生,系的所有学生,检查检查SC选课单所对应的学生选课单所对应的学生是否是这些学生中的一员。是否是这些学生中的一员。例例2:把数学系全体学生的成绩置零:把数学系全体学生的成绩置零 UPDATE SC SET G=0 WHERE MA= (SELECT SD FROM S WHERE S.S# = SC.S# );2024/9/1122数据库系统数据库系统第三章 关系数据库标准语言SQL三、删除数据:三、删除数据:DELETEFROM 表名表名 WHERE 条件条件 ; 只能删除表记录,不删除表

99、只能删除表记录,不删除表结构。无条件时,删除全部结构。无条件时,删除全部记录,仅剩一个空表;有条记录,仅剩一个空表;有条件时删除满足条件的记录。件时删除满足条件的记录。为物理删除命令为物理删除命令删除表结构用删除表结构用DROP TABLE例例1:删除不及格的学生记录。:删除不及格的学生记录。DELETEFROM SCWHERE G =10 ; 视图中字段名可以和基本表中的字段名不同视图中字段名可以和基本表中的字段名不同2024/9/1128数据库系统数据库系统第三章 关系数据库标准语言SQL 没有修改视图的方法,要实现此功能,唯一的途径是先没有修改视图的方法,要实现此功能,唯一的途径是先删除

100、,再重建。删除,再重建。 视图的子查询可以基于一个或多个基本表或视图的子查询可以基于一个或多个基本表或/ /和视图上。和视图上。2、删除视图、删除视图 DROP VIEW 视图名;视图名; 删除基本表或视图后,由被删除的基本表或视图导出删除基本表或视图后,由被删除的基本表或视图导出的视图仍然存在,但已无法使用,需另行删除。的视图仍然存在,但已无法使用,需另行删除。二、视图上的查询二、视图上的查询 1、执行过程执行过程 从数据字典中取出视图的定义,把定义中的子查询和用从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,最后在户的查询结合起来,转换成等价的

101、对基本表的查询,最后在基本表上执行修改后的查询,这一转换称为基本表上执行修改后的查询,这一转换称为视图消解视图消解。2024/9/1129数据库系统数据库系统第三章 关系数据库标准语言SQL例例1:SELECT S#,SA FROM CS_S WHERE SA 20;修改为修改为SSD=CSCS_S 视图中的子查询视图中的子查询 SELECT S#, SN, SA FROM S WHERE SD=CSANDSELECT S#,SAFROMWHERE SA =90GROUP BY S# ;例例2:求平均成绩:求平均成绩90分以上的学生分以上的学生SELECT *FROM S_GWHERE GAV

102、G =90;S_G视图中的定义是视图中的定义是CREATE VIEW S_G(S#, GAVG) AS SELECT S#, AVG(G) FROM SC GROUP BY S#修改为修改为正正确确吗吗 ? 正确的应为正确的应为:SELECT S#, AVG(G)FROM SCGROUP BY S# HAVING AVG(G) =90;2024/9/1131数据库系统数据库系统第三章 关系数据库标准语言SQLINSERTINTO S(S#, SN, SA, SD)VALUES (S12, YanXi, 19,CS)三、视图上的更新(三、视图上的更新(ISNERT,DELETE,UPDATE)

103、1、执行方式执行方式 将对视图的更新语句转化为对相应的基本表的更新语句,将对视图的更新语句转化为对相应的基本表的更新语句,然后执行。为防止更新基本表中不属于本视图的数据,可在然后执行。为防止更新基本表中不属于本视图的数据,可在视图定义时加上视图定义时加上WITH CHECK OPTION子句。子句。例例1: INSERT INTO CS_S VALUES (S12, YanXi, 19)视图中的子查询视图中的子查询 SELECT S#, SN, SA FROM S WHERE SD=CS2024/9/1132数据库系统数据库系统第三章 关系数据库标准语言SQL例例2:将计算机系学号为:将计算机

104、系学号为“S2”的学生姓名改为的学生姓名改为“刘辰刘辰”。 UPDATE CS_SSET SN = “刘辰刘辰”WHERE S#=“S2”;UPDATE SSET SN = “刘辰刘辰”WHERE S#=“S2” AND SD=“CS”;例例3:删除计算机系学号为:删除计算机系学号为“S2”的学生的学生 . DELETEFROM CS_SWHERE S#=“S2”;DELETEFROM SWHERE S#=“S2” AND SD=“CS”;2、注意事项、注意事项 不是所有的视图更新都可正确转化为对基本表的更新语句不是所有的视图更新都可正确转化为对基本表的更新语句2024/9/1133数据库系统

105、数据库系统第三章 关系数据库标准语言SQL 有些视图是可更新的有些视图是可更新的, 有些视图是不可更新的。有些视图是不可更新的。但现在还但现在还无判别方法。无判别方法。 肯定可以更新的视图是肯定可以更新的视图是 行列子集视图行列子集视图例如:例如:UPDATE S_G SET GAVG=90 WHERE S#=S1;不能有意义地转化不能有意义地转化 处理方式:只有从单个表导出的视图才允许更新操作,处理方式:只有从单个表导出的视图才允许更新操作, 且作一系列的限制。(限制见且作一系列的限制。(限制见P127)从单个表导出,且只是去掉从单个表导出,且只是去掉了基本表的某些行和某些列了基本表的某些行

106、和某些列并保留了码并保留了码 从概念上分清从概念上分清不可更新视图不可更新视图和和不允许更新视图不允许更新视图。2024/9/1134数据库系统数据库系统第三章 关系数据库标准语言SQL1、能够简化用户的操作、能够简化用户的操作2、用户能以不同的方式对待同一数据,方便灵活用户能以不同的方式对待同一数据,方便灵活3、提供一定程度的逻辑独立性、提供一定程度的逻辑独立性4、有利于安全保密有利于安全保密四、视图的优点(四、视图的优点(P128) 本节开头本节开头下一节下一节本章开头本章开头2024/9/1135数据库系统数据库系统第三章 关系数据库标准语言SQL数据控制功能包括数据控制功能包括事物管理

107、功能事物管理功能和和数据保护功能数据保护功能。即。即 数据的安全性、完整性、事务控制、并发控制和恢复功能数据的安全性、完整性、事务控制、并发控制和恢复功能本节只讨论安本节只讨论安全性机制,即全性机制,即用户对数据的用户对数据的存取权力。存取权力。6 SQL数据控制功能数据控制功能可通过在可通过在CREATE TABLE、ALTER TABLE语句中定义码、取值唯一的列、语句中定义码、取值唯一的列、不允许空值的列、外码(参照完整性)不允许空值的列、外码(参照完整性)及其它一些约束条件来体现。及其它一些约束条件来体现。在后面在后面章节介章节介绍。绍。一、授权一、授权1、机制机制:大的:大的DBMS

108、中有一个超级用户中有一个超级用户DBA,其他用户能否,其他用户能否 存在、对某类数据具有何种操作权力是由存在、对某类数据具有何种操作权力是由DBA决定决定 的,系统提供授权机制。的,系统提供授权机制。执行过程为:执行过程为:2024/9/1136数据库系统数据库系统第三章 关系数据库标准语言SQL(1)用数据控制语言把授权决定告知系统;)用数据控制语言把授权决定告知系统;(2)系统把授权的结果存入数据字典;)系统把授权的结果存入数据字典;(3)当用户提出)当用户提出 操作请求时,系统根据授权情况进行检查,操作请求时,系统根据授权情况进行检查, 以决定是否执行。以决定是否执行。2024/9/11

109、37数据库系统数据库系统第三章 关系数据库标准语言SQL2、权力的授予与收回、权力的授予与收回授予授予:GRANT 权力权力 ,权力,权力 ON 对象类型对象类型 对象名对象名 TO 用户名用户名 ,用户名,用户名 WITH GRANT OPTION ;若干权力若干权力操作对象操作对象获得权力的用户获得权力的用户有此项,被授权用户可再授权给其他用户有此项,被授权用户可再授权给其他用户收回收回:REVOKE 权力权力 ,权力,权力 ON 对象类型对象类型 对象名对象名 FROM 用户名用户名 ,用户名,用户名 ;3、操作权力分类:、操作权力分类: 见见P130表表3.42024/9/1138数据

110、库系统数据库系统第三章 关系数据库标准语言SQL4、示例:、示例: 见见P1315、说明、说明 数据库的属主、表的属主、数据库对象的属主在他创建数据库的属主、表的属主、数据库对象的属主在他创建的对象上具有一切可能的权力,其他用户得不到主人的授的对象上具有一切可能的权力,其他用户得不到主人的授权就不能在该对象上操作;权就不能在该对象上操作; SQL的授权机制十分灵活,各种系统又作了适当的补充,的授权机制十分灵活,各种系统又作了适当的补充, 使用十分方便;使用十分方便; SQL的安全性控制除了上述授权机制外,还可设置口令的安全性控制除了上述授权机制外,还可设置口令进一步保密。进一步保密。本节开头本

111、节开头下一节下一节本章开头本章开头2024/9/1139数据库系统数据库系统第三章 关系数据库标准语言SQL一、一、SQL的使用方式的使用方式 1、交互式交互式:在终端上每输入一条:在终端上每输入一条SQL语句,系统立即执行,语句,系统立即执行,然后等待用户输入下一条语句。然后等待用户输入下一条语句。 2、自编程式自编程式:在实际的:在实际的DMBS中,都对中,都对SQL进行了扩充,进行了扩充,增加了条件、循环等控制语句,并提供编程机制。如增加了条件、循环等控制语句,并提供编程机制。如SYBASE中,用户可以编写存储过程并调用它。中,用户可以编写存储过程并调用它。 3、嵌入式嵌入式(嵌入到某种

112、主语言中使用):嵌入到某种主语言中使用): 宿主语言负责:运算、处理、流程控制等宿主语言负责:运算、处理、流程控制等 SQL负责:数据库操作负责:数据库操作7 嵌入式嵌入式SQL2024/9/1140数据库系统数据库系统第三章 关系数据库标准语言SQL二、嵌入式二、嵌入式SQL使用时的问题使用时的问题 必须解决和主语言相互配合、连接等问题必须解决和主语言相互配合、连接等问题1、标识、标识SQL语句语句 用前缀,如用前缀,如EXEC SQL或或$等,标记等,标记SQL语句的开始;语句的开始; 用用END-EXEC或分号或分号;等标记等标记SQL语句的结束。语句的结束。 SQL语句标识是通知主语言

113、的预编译程序将语句标识是通知主语言的预编译程序将SQL语句转语句转化为等价的主语言语句,然后再由编译程序形成目标代码化为等价的主语言语句,然后再由编译程序形成目标代码2、SQL语句与主语言之间的通信语句与主语言之间的通信 (1)通过)通过SQL通信区(通信区(SQLCA)将)将SQL语句的执行状语句的执行状态传递给主语言。态传递给主语言。 SQLCA是一个数据结构,其中有一个重是一个数据结构,其中有一个重要变量要变量SQLCODE,存放,存放SQL语句是否执行成功的信息,每语句是否执行成功的信息,每执行一个执行一个SQL语句,主语言都应测试该变量。语句,主语言都应测试该变量。 2024/9/1

114、141数据库系统数据库系统第三章 关系数据库标准语言SQL (3)SQL语句中可使用主语言的程序变量(叫主变量)语句中可使用主语言的程序变量(叫主变量),但要加前缀标志,一般用冒号,但要加前缀标志,一般用冒号:。 (4)SQL语句和主语言的数据交换一般通过字段变量语句和主语言的数据交换一般通过字段变量和主变量进行,但两者数据类型要匹配和主变量进行,但两者数据类型要匹配 (5)一个)一个SQL语句可以产生一组记录,而主语言一次语句可以产生一组记录,而主语言一次只能处理一个记录,为此需协调两种方式只能处理一个记录,为此需协调两种方式 办法:用办法:用游标游标(Cursor),有的叫位置指针),有的

115、叫位置指针 (6)通常用)通常用CONNECT语句来语句来连接连接(申请使用)(申请使用)数据库数据库例子见例子见P1362024/9/1142数据库系统数据库系统第三章 关系数据库标准语言SQL三、不需游标的三、不需游标的SQL语句语句 说明性语句说明性语句 数据定义语句数据定义语句 数据控制语句数据控制语句 查询结果为单记录的查询结果为单记录的SELECT语句语句 非非CURRENT形式的形式的UPDATE语句语句 非非CURRENT形式的形式的DELETE语句语句 INSERT语句语句最简单的一类语句,不需返回最简单的一类语句,不需返回结果,不使用主变量,在主语结果,不使用主变量,在主语

116、言中只需加前缀言中只需加前缀EXEC SQL和和语句结束符即可。语句结束符即可。1、说明、数据定义、数据控制语句、说明、数据定义、数据控制语句 见教材见教材P137-138一般均使一般均使用主变量用主变量2024/9/1143数据库系统数据库系统第三章 关系数据库标准语言SQL待查的学号存在待查的学号存在GIVENS#中中查询结果存查询结果存入这三个主入这三个主变量中变量中2、查询结果为单记录的、查询结果为单记录的SELECT语句语句 SELECT语句的语句的INTO、WHERE、HAVING子句中可使子句中可使用主变量用主变量 可在可在INTO子句中使用指示变量,以指明某字段是否空值子句中使

117、用指示变量,以指明某字段是否空值 若若SQLCODE=100,说明没有满足条件的记录,说明没有满足条件的记录当查询到的记录多于当查询到的记录多于1条时,在条时,在SQLCODE中返回错误信息中返回错误信息指示变量,指示变量,0说明取说明取得的得的G为为空值空值例例 根据主变量的值查找学生的信息根据主变量的值查找学生的信息 EXEC SQL SELECT S#,C#,G INTO :SNO,:CNO,:G :GID FROM SC WHERE S#= :GS AND C#=:GC;2024/9/1144数据库系统数据库系统第三章 关系数据库标准语言SQL3、非、非CURRENT形式的形式的UPD

118、ATE语句语句例例 将计算机系全体学生的成绩置为空值将计算机系全体学生的成绩置为空值GID = -1;EXEC SQL UPDATE SC SET G = :GG :GID WHERE “CS”= (SELECT SD FROM S WHERE S.S#=SC.S#);这里使用了值为负的指示这里使用了值为负的指示变量变量GID, 主变量主变量GG可为可为任意值任意值 WHERE、SET子句中可以使用主变量,同时子句中可以使用主变量,同时SET子句中子句中还可以使用指示变量还可以使用指示变量通过检查通过检查SQLCA的值,判别更新是否成功的值,判别更新是否成功2024/9/1145数据库系统数据

119、库系统第三章 关系数据库标准语言SQL4、非、非CURRENT形式的形式的DELETE语句语句例例 学号在主变量学号在主变量X1和和X2之间的学生已毕业,删除他们的之间的学生已毕业,删除他们的信息。信息。先删除他们的选课信息先删除他们的选课信息EXEC SQL DELETE FROM SC WHERE S# BETWEEN :X1 AND :X2;再删除他们的基本情况信息再删除他们的基本情况信息EXEC SQL DELETE FROM S WHERE S# BETWEEN :X1 AND :X2; WHERE子句子句中可使用主变量中可使用主变量 2024/9/1146数据库系统数据库系统第三章

120、 关系数据库标准语言SQL5、INSERT语句语句例例 插入一条学生选课记录插入一条学生选课记录GID = -1;EXEC SQL INSERT INTO SC(S#,C#,G) VALUES(:SNO, :CNO, :GG :GID););欲插入记录的值由主语欲插入记录的值由主语言存放在三个主变量中,言存放在三个主变量中,GID指示成绩字段值为指示成绩字段值为空值,空值,GG可为任意值可为任意值四、使用游标的四、使用游标的SQL语句语句下列情况必须使用游标下列情况必须使用游标 查询结果为多条记录的查询结果为多条记录的SELECT 语句语句 CURRENT形式的形式的UPDATE语句语句 CU

121、RRENT形式的形式的DELETE语句语句2024/9/1147数据库系统数据库系统第三章 关系数据库标准语言SQL1、查询结果为多条记录的、查询结果为多条记录的SELECT语句语句如:查找由主变量如:查找由主变量DEPT中给出的某个系的全体学生信息中给出的某个系的全体学生信息EXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT;EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; END;EXEC SQL CLOSE SX;定

122、义游标定义游标打开游标打开游标推进游标推进游标关闭游标关闭游标2024/9/1148数据库系统数据库系统第三章 关系数据库标准语言SQLEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT;EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; END;EXEC SQL CLOSE SX;S:S# SN SD SAS0 X MA 18S1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 2

123、0S6 F CS 22S7 G CI 21假设假设DEPT中为中为CS主变量主变量 S# SNAME AGE 游标游标SX游标游标SXS1A202024/9/1149数据库系统数据库系统第三章 关系数据库标准语言SQLEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT;EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; END;EXEC SQL CLOSE SX;S:S# SN SD SAS0 X MA 18S1 A CS

124、20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22S7 G CI 21假设假设DEPT中为中为CS主变量主变量 S# SNAME AGE 游标游标SXS1A20S2 B 212024/9/1150数据库系统数据库系统第三章 关系数据库标准语言SQLEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT;EXEC SQL OPEN SX; DO WHILE EXEC SQL FETCH SX INTO :S#, :SNAME, :AGE; END;EXEC SQ

125、L CLOSE SX;S:S# SN SD SAS0 X MA 18S1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22S7 G CI 21假设假设DEPT中为中为CS主变量主变量 S# SNAME AGE游标游标SXS2 B 21S6 F 222024/9/1151数据库系统数据库系统第三章 关系数据库标准语言SQLEXEC SQL DECLARE SX CURSOR FOR SELECT S#,SN,SA FROM S WHERE SD=:DEPT;EXEC SQL OPEN SX; DO WHILE EXEC SQL F

126、ETCH SX INTO :S#, :SNAME, :AGE; END;EXEC SQL CLOSE SX;S:S# SN SD SAS0 X MA 18S1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22S7 G CI 21主变量主变量 S# SNAME AGE游标游标SXS6 F 222024/9/1152数据库系统数据库系统第三章 关系数据库标准语言SQL2、CURRENT形式的形式的UPDATE和和DELETE语句语句 可修改或删除当前活动游标所指向的记录可修改或删除当前活动游标所指向的记录.例子见例子见P144-14

127、6本节开头本节开头本章开头本章开头2024/9/1153数据库系统数据库系统第四章 关系系统及其查询优化1、掌握关系系统的有关概念、掌握关系系统的有关概念2、了解全关系系统的十二条基本准则、了解全关系系统的十二条基本准则3、掌握查询优化的一般策略、掌握查询优化的一般策略4、掌握关系代数的等价变换规则、掌握关系代数的等价变换规则5、掌握关系代数表达式的优化算法和优化的一般步骤、掌握关系代数表达式的优化算法和优化的一般步骤本章要求:本章要求:本章内容:本章内容:请选择内容请选择内容返回返回1 关系系统关系系统2 关系系统的查询优化关系系统的查询优化2024/9/1154数据库系统第四章 关系系统及

128、其查询优化一、关系系统的定义一、关系系统的定义1、关系模型:、关系模型: 数据结构:数据结构: 关系(二维表)关系(二维表) 数据操纵:数据操纵: 关系代数(或关系演算)关系代数(或关系演算) 完整性约束:实体完整性、参照完整性、用户定义的完整性完整性约束:实体完整性、参照完整性、用户定义的完整性2、关系系统的定义、关系系统的定义 关系系统是关系数据库系统的简称关系系统是关系数据库系统的简称 从概念上讲,支持关系模型的系统称为关系系统。从概念上讲,支持关系模型的系统称为关系系统。 一个系统称为关系系统,当且仅当一个系统称为关系系统,当且仅当(1)支持关系数据结构;)支持关系数据结构;(2)支持

129、选择、投影和连接运算。)支持选择、投影和连接运算。 对运算不要求定义任何物对运算不要求定义任何物理存取路径。理存取路径。1 关系系统关系系统要求过于严格要求过于严格 按最小要求定义关系系统:按最小要求定义关系系统:2024/9/1155数据库系统第四章 关系系统及其查询优化二、关系系统的分类二、关系系统的分类 按对按对关系模型关系模型的支持程度来分的支持程度来分SMI数据操纵数据操纵完整性完整性结构结构1、表式系统、表式系统 仅支持关系结构,仅支持关系结构, 不支持集合级操作不支持集合级操作SMIS如:倒排表如:倒排表2024/9/1156数据库系统第四章 关系系统及其查询优化SMIS2、(最

130、小)关系系统、(最小)关系系统 支持关系结构,支持关系结构, 支持选择、投影和连接运算支持选择、投影和连接运算M3、关系上完备的系统、关系上完备的系统 支持关系结构,支持关系结构, 支持所有的关系代数操作支持所有的关系代数操作SMISMM如:如:SYBASE、ORACLE、DB2如:如:FoxBASE、FoxPro2024/9/1157数据库系统第四章 关系系统及其查询优化4、全关系系统、全关系系统 支持关系模型的所有特征支持关系模型的所有特征 SYBASE、ORACLE、DB2等系统已接近这个目标等系统已接近这个目标SMISMSI三、全关系系统的十二条基本准则三、全关系系统的十二条基本准则基

131、础(准则基础(准则 0 0):):关系型关系型DBMS必须能完全通过它的关系能必须能完全通过它的关系能 力来管理数据库力来管理数据库在关系一级上支持数据的插入、删除、修改,在关系一级上支持数据的插入、删除、修改,没有任何操作必须通过非关系的能力才能实现没有任何操作必须通过非关系的能力才能实现2024/9/1158数据库系统第四章 关系系统及其查询优化准则准则1 1:信息准则:信息准则。逻辑上可用一种方法(表中的值)来表示。逻辑上可用一种方法(表中的值)来表示 所有信息。所有信息。用户数据、元数据、索引、应用元数据统一用表格来表示用户数据、元数据、索引、应用元数据统一用表格来表示好处:好处: 提

132、高用户生产率提高用户生产率 便于便于DBA维护数据库维护数据库 便于与其它软件接口便于与其它软件接口准则准则2 2:保证访问准则:保证访问准则。依靠表名、主键、列名的组合,保证。依靠表名、主键、列名的组合,保证 能以逻辑方式(而不是物理方式)访能以逻辑方式(而不是物理方式)访 问到每一个数据项。问到每一个数据项。准则准则3 3:空值的系统化处理:空值的系统化处理。好处:好处: 完善完整性约束完善完整性约束 对库函数计算的准确性极为重要对库函数计算的准确性极为重要2024/9/1159数据库系统第四章 关系系统及其查询优化准则准则5 5:统一的数据子语言准则:统一的数据子语言准则。 一种语言全面

133、支持以下功能:一种语言全面支持以下功能: 数据定义、视图定义数据定义、视图定义 数据操作数据操作 完整性约束完整性约束 授权授权 事务处理功能事务处理功能准则准则4 4:基于关系模型的动态的联机数据字典:基于关系模型的动态的联机数据字典。 数据库自身的描述(元数据)也用关系,且授权用户数据库自身的描述(元数据)也用关系,且授权用户 也可以查询。也可以查询。好处:好处: 学习简单学习简单 授权用户可扩充数据字典授权用户可扩充数据字典2024/9/1160数据库系统第四章 关系系统及其查询优化准则准则6 6:视图更新准则:视图更新准则。所有理论上可更新的视图也应该允许。所有理论上可更新的视图也应该

134、允许 由系统更新。由系统更新。提高逻辑独立性提高逻辑独立性准则准则7 7:高级的插入、修改、删除操作:高级的插入、修改、删除操作。把一个基本关系或导。把一个基本关系或导 出关系作为单一的操作对象进行处理。出关系作为单一的操作对象进行处理。好处:好处: 简化用户操作简化用户操作 便于系统优化便于系统优化 便于分布式处理便于分布式处理准则准则8 8:数据物理独立性:数据物理独立性。准则准则9 9:数据逻辑独立性:数据逻辑独立性。准则准则1010:数据完整性的独立性:数据完整性的独立性。 完整性约束条件必须是用数据子语言定义并存储在数完整性约束条件必须是用数据子语言定义并存储在数 据字典中。据字典中

135、。2024/9/1161数据库系统第四章 关系系统及其查询优化准则准则1111:分布独立性:分布独立性。 数据子语言能使应用程序和终端活动在下列情况下保持数据子语言能使应用程序和终端活动在下列情况下保持 逻辑不变性:逻辑不变性: 首次分布数据时;首次分布数据时; 数据重新分布时。数据重新分布时。准则准则1212:无破坏准则:无破坏准则。 如果一个关系系统具有一个低级(指一次一记录)语言,如果一个关系系统具有一个低级(指一次一记录)语言, 则这个低级语言不能违背或绕过完整性准则。则这个低级语言不能违背或绕过完整性准则。E. F. Codd提出的提出的12条准则条准则本节开头本节开头下一节下一节本

136、章开头本章开头2024/9/1162数据库系统第四章 关系系统及其查询优化 关系数据语言只需用户指出关系数据语言只需用户指出“干什么干什么”,不必指出,不必指出“怎怎么干么干”,为什么能做到这一点?,为什么能做到这一点? 一个重要原因就是一个重要原因就是系统能自动进行查询优化系统能自动进行查询优化。查询优化的总目标:查询优化的总目标: 选择有效的策略,求得给定的关系表达式的值。选择有效的策略,求得给定的关系表达式的值。一、为什么要进行查询优化?一、为什么要进行查询优化? 例:例:求选修了课程求选修了课程C2的学生姓名的学生姓名SELECT S.SNFROM S, SCWHERE S.S# =

137、SC.S# AND SC.C# = C2;2 关系系统的查询优化关系系统的查询优化2024/9/1163数据库系统第四章 关系系统及其查询优化也可用也可用SQL语言如下实现语言如下实现:SELECT SNFROM SWHERE S.S# IN ( SELECT SC.S# FROM SC WHERE C# = C2 ) ; 对于一个复杂的查询,不同的用户可能会写出许许多多不对于一个复杂的查询,不同的用户可能会写出许许多多不同的查询方法。这些方法有的简单,有的复杂。它们的执行结同的查询方法。这些方法有的简单,有的复杂。它们的执行结果是一样的,但执行效率可能是不一样的。系统能解决这一问果是一样的,

138、但执行效率可能是不一样的。系统能解决这一问题吗?题吗?2024/9/1164数据库系统第四章 关系系统及其查询优化 对这一查询,可以考虑下面几种实现方式:对这一查询,可以考虑下面几种实现方式:1、先求、先求S和和SC的笛卡尔积,然后从中选出两学号字段值相等、的笛卡尔积,然后从中选出两学号字段值相等、 课程号为课程号为C2的元组:的元组:Q1 = ( (S SC)SN S.S#=SC.S# SC.C#=C22、先做、先做S和和SC的自然连接,然后从中选出课程号为的自然连接,然后从中选出课程号为C2的元组:的元组:Q2 = ( (S SC)SN SC.C#=C23、先从、先从SC中选出课程号为中选

139、出课程号为C2的元组,然后将该结果与的元组,然后将该结果与S 连接:连接:Q3 = (S (SC)SN SC.C#=C22024/9/1165数据库系统第四章 关系系统及其查询优化 分析三种实现策略的执行时间分析三种实现策略的执行时间:设有设有1000学生记录,学生记录,10000选课记录,选修选课记录,选修C2课程的学生有课程的学生有50名。名。1、第一种策略:、第一种策略:Q1 = ( (S SC)SN S.S#=SC.S# SC.C#=C2(1)计算广义笛卡尔积)计算广义笛卡尔积 S SC: 执行方式:执行方式:读读S表表读读SC表表S1 A CS 20S2 B CS 21S3 C MA

140、 19S4 D CI 19S5 E MA 22S6 F CS 19S1 C1 AS1 C2 AS1 C3 A每次读每次读若干块若干块每次读每次读一块一块S SC存于临时文件中存于临时文件中S1 A CS 20 S1 C1 AS1 A CS 20 S1 C2 AS1 A CS 20 S1 C3 AS2 B CS 21 S1 C1 AS2 B CS 21 S1 C2 AS2 B CS 21 S1 C3 A S6 F CS 19 S1 C1 AS6 F CS 19 S1 C2 AS6 F CS 19 S1 C3 A2024/9/1166数据库系统第四章 关系系统及其查询优化读读S表表读读SC表表S1

141、 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 22S6 F CS 19S1 C1 AS1 C2 AS1 C3 AS SC存于临时文件中存于临时文件中S1 A CS 20 S1 C1 AS1 A CS 20 S1 C2 AS1 A CS 20 S1 C3 AS2 B CS 21 S1 C1 AS2 B CS 21 S1 C2 AS2 B CS 21 S1 C3 A S6 F CS 19 S1 C1 AS6 F CS 19 S1 C2 AS6 F CS 19 S1 C3 AS1 C5 BS2 C1 BS2 C2 C读下一块读下一块S1 A CS 20

142、S1 C5 BS1 A CS 20 S2 C1 BS1 A CS 20 S2 C2 C 相当于相当于外循环外循环相当于相当于内循环内循环2024/9/1167数据库系统第四章 关系系统及其查询优化 设一块能装设一块能装10个学生记录或个学生记录或100个选课记录,每次在内存中个选课记录,每次在内存中存放存放5块块S的元组、的元组、1块块SC的元组,则的元组,则S表和表和SC表的总块数各为表的总块数各为100。外循环一次,内循环。外循环一次,内循环20次,要读取的总块数为次,要读取的总块数为 100 + 100 20 = 2100块块连接后的元组数为连接后的元组数为 1000 10000 = 1

143、千万,设每块能装千万,设每块能装10个元组,个元组,则则 S SC的总块数为的总块数为1百万块百万块 设每秒能读写设每秒能读写20块,则块,则读的时间:读的时间:2100块块 20块块/秒秒 = 105秒秒写的时间:写的时间:1000000块块 20块块/秒秒 = 50000秒秒(2)依次读入)依次读入S SC的元组,然后执行选择:的元组,然后执行选择:读的时间:读的时间:1000000块块 20块块/秒秒 = 50000秒秒满足条件的元组满足条件的元组50个,设全部放入内存(不再临时存储)个,设全部放入内存(不再临时存储)2024/9/1168数据库系统第四章 关系系统及其查询优化(3)在上

144、步基础上执行投影得最终结果(此步时间不计)。)在上步基础上执行投影得最终结果(此步时间不计)。第一种策略的总时间为:第一种策略的总时间为: 105 + 50000 + 50000 10万秒(近万秒(近28小时)小时)Q2 = ( (S SC)SN SC.C#=C22、第二种策略、第二种策略(1)计算自然连接)计算自然连接 读取读取S表和表和SC表的策略不变,执行时间还是表的策略不变,执行时间还是105秒。秒。 因为因为SC表中的每一个学号都在表中的每一个学号都在S表中出现,而表中出现,而S表中无重复表中无重复学号,故连接后的表和学号,故连接后的表和SC表的行数一样,为表的行数一样,为10000

145、行,将它们行,将它们临时存入盘中需临时存入盘中需 (10000 10)块)块 20块块/秒秒 = 50秒秒计算自然连接需时:计算自然连接需时:105 + 50 = 155秒秒2024/9/1169数据库系统第四章 关系系统及其查询优化(2)执行选择运算)执行选择运算主要为读取中间文件的时间:为主要为读取中间文件的时间:为50秒秒(3)把上一步结果投影,时间忽略不计)把上一步结果投影,时间忽略不计第二种策略的总时间为:第二种策略的总时间为: 155 + 50 = 205秒秒Q3 = (S (SC)SN SC.C#=C23、第三种策略、第三种策略(1)先对)先对SC表作选择表作选择 只需读一遍只需

146、读一遍SC表,需时表,需时 100块块 20块块/秒秒 = 5秒秒 中间结果只有中间结果只有50个记录,不需使用中间文件个记录,不需使用中间文件(2)作自然连接)作自然连接 只需读一遍只需读一遍S表,边读边和内存中的中间结果连接,结果表,边读边和内存中的中间结果连接,结果仍为仍为50个元组需时个元组需时 5秒秒2024/9/1170数据库系统第四章 关系系统及其查询优化(3)把上一步结果投影,时间忽略不计)把上一步结果投影,时间忽略不计第三种策略的总时间为:第三种策略的总时间为: 5 + 5 = 10秒秒结论:不同的查询策略其执行时间可能差别很大结论:不同的查询策略其执行时间可能差别很大二、优

147、化的一般策略二、优化的一般策略好处:减少下一步运算的数据量好处:减少下一步运算的数据量1、选择、投影运算应尽可能先做、选择、投影运算应尽可能先做2、把选择和投影运算同时进行、把选择和投影运算同时进行好处:减少扫描关系的次数好处:减少扫描关系的次数 ( (S )SN SD=CSS1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 22表表S S# SN SD SA 2024/9/1171数据库系统第四章 关系系统及其查询优化3、在执行连接前对文件适当地预处理、在执行连接前对文件适当地预处理例如:计算例如:计算 S SCSC:S# C# GS4 C3 BS1 C2 AS1 C

148、5 BS6 C4 AS2 C1 BS5 C3 BS2 C2 CS1 C1 AS2 C4 CS3 C2 BS1 C3 AS3 C3 CS4 C5 DS5 C2 CS3 C4 BS5 C5 BS6 C5 AS: S# SN SD SAS1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22执行连接时,对执行连接时,对S 表表只需扫描一遍,但若只需扫描一遍,但若S的元组不能整个放入的元组不能整个放入内存,则内存,则S需多少次读需多少次读入内存,对入内存,对SC表就要扫描多少遍表就要扫描多少遍2024/9/1172数据库系统第四章 关系系

149、统及其查询优化SC:S# C# GS1 C1 AS1 C2 AS1 C3 AS1 C5 BS2 C1 BS2 C2 CS2 C4 CS3 C2 BS3 C3 CS3 C4 BS4 C3 BS4 C5 DS5 C2 CS5 C3 BS5 C5 BS6 C4 AS6 C5 AS: S# SN SD SAS1 A CS 20S2 B CS 21S3 C MA 19S4 D CI 19S5 E MA 20S6 F CS 22 若对若对S表和表和SC表表按连接字段先排序按连接字段先排序或索引,效果如何?或索引,效果如何?对对S表和表和SC表都表都只需一遍扫描只需一遍扫描2024/9/1173数据库系统第

150、四章 关系系统及其查询优化4、把投影同其前或其后的双目运算结合起来、把投影同其前或其后的双目运算结合起来 (S SC)S#,SN,C#,G 如:如:每形成一个连接后的元组,就立即取出投影字段。而不是先每形成一个连接后的元组,就立即取出投影字段。而不是先连接形成一个临时关系,然后在再此临时关系上投影。连接形成一个临时关系,然后在再此临时关系上投影。又如:又如:每取出每取出S的一个元组,先取出投影字段,然后与的一个元组,先取出投影字段,然后与SC进行连接进行连接( ( S)S#,SN SC5、把某些选择和笛卡尔乘积结合起来成为连接运算、把某些选择和笛卡尔乘积结合起来成为连接运算6、找出公共子表达式

151、、找出公共子表达式2024/9/1174数据库系统第四章 关系系统及其查询优化三、关系代数等价变换规则三、关系代数等价变换规则设设E、E1、E2是关系代数表达式。是关系代数表达式。1、关系代数表达式的等价、关系代数表达式的等价 若用相同的关系代替若用相同的关系代替E1、E2中相应的关系变量后所得的中相应的关系变量后所得的结果关系相同,则称结果关系相同,则称E1、E2等价,记作等价,记作 E1 E2。2、一元运算的串接定律(幂等律)、一元运算的串接定律(幂等律) (1)投影的串接定律投影的串接定律 ( (E) (E)A1,A2,AnA1,A2,AnB1,B2,Bm其中其中A1,A2,An B1,

152、B2,Bm2024/9/1175数据库系统第四章 关系系统及其查询优化图示:图示:B1B2B3B4A1A2A3 A1A2A3(2)选择的串接定律选择的串接定律 ( (E) (E)F1F2F1 F22024/9/1176数据库系统第四章 关系系统及其查询优化3、二元运算的交换律、二元运算的交换律笛卡尔积:笛卡尔积: E1 E2 E2 E1自然连接:自然连接: E1 E2 E2 E1连连 接:接: E1 E2 E2 E1FF4、二元运算的结合律、二元运算的结合律笛卡尔积:笛卡尔积: (E1 E2) E3 E1 (E2 E3) 自然连接:自然连接: ( E1 E2) E3 E1 (E2 E3)自然连

153、接:自然连接: ( E1 E2) E3 E1 (E2 E3)F1F2F1F22024/9/1177数据库系统第四章 关系系统及其查询优化5、两个运算间的交换律、两个运算间的交换律(1)选择和投影:)选择和投影: ( (E) ( (E)A1,A2,AnA1,A2,AnFFA1A2A3先投影后选择先投影后选择A1A2A3先选择后投影先选择后投影结果相同结果相同其中其中F只涉及只涉及A1,A2,An的属性的属性2024/9/1178数据库系统第四章 关系系统及其查询优化若若F中有不属于中有不属于A1,A2,An的属性的属性B1,B2,Bm,则,则 ( (E)A1,A2,AnF无意义,无意义,但根据但

154、根据投影的串接定律投影的串接定律和上面的和上面的投影与选择的交换律投影与选择的交换律,有:,有: ( (E)A1,A2,AnF ( ( (E)A1,A2,AnA1,A2,An ,B1,B2,BmF ( ( (E)A1,A2,AnA1,A2,An , B1,B2,BmF(2) 选择与笛卡尔积选择与笛卡尔积若若F只涉及到只涉及到E1中的属性,则中的属性,则 (E1 E2) (E1) E2FF2024/9/1179数据库系统第四章 关系系统及其查询优化6、一元运算对二元运算的分配律、一元运算对二元运算的分配律(1)选择对笛卡尔积的分配律)选择对笛卡尔积的分配律 若若F=F1 F2,F1只涉及只涉及E

155、1中的属性,中的属性,F2只涉及只涉及E2中的属性,中的属性,则则 (E1 E2) (E1) ( E2)FF1F2如:如: (S SC)SD=CS G=A (S) ( SC)SD=CSG=A笛卡尔积笛卡尔积S表表S1 A CS 20S2 B MA 21S3 C CS 19SC表表S1 C1 AS1 C2 AS2 C2 AS3 C1 BS3 C3 AS1 A CS 20 S1 C1 AS1 A CS 20 S1 C2 AS1 A CS 20 S2 C2 AS1 A CS 20 S3 C1 BS1 A CS 20 S3 C3 AS2 B MA 21 S1 C1 AS2 B MA 21 S1 C2

156、AS2 B MA 21 S2 C2 AS2 B MA 21 S3 C1 BS2 B MA 21 S3 C3 AS3 C CS 19 S1 C1 AS3 C CS 19 S1 C2 AS3 C CS 19 S2 C2 AS3 C CS 19 S3 C1 BS3 C CS 19 S3 C3 A2024/9/1180数据库系统第四章 关系系统及其查询优化(2)投影对笛卡尔积的分配律)投影对笛卡尔积的分配律 (E1 E2)A1,A2,An, B1,B2,Bm其中其中A1,A2,An是是E1的属性的属性, B1,B2,Bm是是E2的属性。的属性。(3)选择对连接的分配律)选择对连接的分配律若若F=F1

157、F2,F1只涉及只涉及E1的属性,的属性,F2只涉及只涉及E2的属性,则的属性,则 (E1 E2) (E1) ( E2)FF1F2F3F3 (E1) (E2)A1,A2,AnB1,B2,Bm ( ( E1) ( E2) (E1) ( E2)F3F1F1F2F3F2 (E1 E2) ( (E1 E2) ( (E1 E2)FFF3F3F3F因为:因为:2024/9/1181数据库系统第四章 关系系统及其查询优化 ( (S) (SC)SN,C#,GS.S#=SC.S#S#,SNS#,C#,G(4)投影对连接的分配律)投影对连接的分配律 (E1 E2)A1,A2,An, B1,B2,BmF (E1)

158、(E2)A1,A2,AnB1,B2,BmF 其中其中F只涉及只涉及 A1,A2,An, B1,B2,Bm中的属性中的属性 若若F涉及涉及A1,A2,An, B1,B2,Bm以外的属性,可如下处理以外的属性,可如下处理 (S SC)SN,C#,GS.S#=SC.S# (S SC)SN,C#,GS.S#=SC.S#S.S#,SN,SC.S#,C#,G此处投影可去掉此处投影可去掉SC)2024/9/1182数据库系统第四章 关系系统及其查询优化(6)投影对并的分配律)投影对并的分配律(5)选择对并的分配律)选择对并的分配律 (E1 E2) (E1) ( E2)FF F (E1 E2)A1,A2,An

159、 (E1) (E2)A1,A2,AnA1,A2,An(7)选择对差的分配律)选择对差的分配律 (E1 E2) (E1) ( E2)FF F2024/9/1183数据库系统第四章 关系系统及其查询优化四、关系代数表达式的优化四、关系代数表达式的优化1、语法树、语法树 用来表示关系代数表达式的一棵树,其内结点表示一种用来表示关系代数表达式的一棵树,其内结点表示一种运算,叶结点表示一个关系。例:运算,叶结点表示一个关系。例: SELECT S.SNFROM S, SCWHERE S.S# = SC.S# AND SC.C# = C2;可转化为如下关系运算:可转化为如下关系运算: Project (S

160、N) (Restrict (SC.C#=C2) (Join (S.S#=SC.S#) (S,SC) ) )Project (SN)Restrict(SC.C#=C2)Join(S.S#=SC.S#)SSC语法树语法树2024/9/1184数据库系统第四章 关系系统及其查询优化 为简化优化算法,可将关系代数运算限制在为简化优化算法,可将关系代数运算限制在“并、差、笛卡并、差、笛卡尔积、投影、选择尔积、投影、选择”五种基本运算上。五种基本运算上。Project (SN)Restrict(SC.C#=C2)Join(S.S#=SC.S#)SSC规范化为规范化为 SN SC.C#=C2 S.S#=SC

161、.S# SSC2024/9/1185数据库系统第四章 关系系统及其查询优化2、关系代数表达式的优化算法、关系代数表达式的优化算法输入:一棵关系代数表达式的语法树输入:一棵关系代数表达式的语法树输出:计算该表达式的程序输出:计算该表达式的程序利用选择的串接定律,把形如利用选择的串接定律,把形如 (E)的式子)的式子变换为变换为F1 F2Fn ( ( (E)F1 F2Fn 对每一个选择,利用对每一个选择,利用“选择的串接定律、选择和投影的选择的串接定律、选择和投影的交换律、选择对笛卡尔积的分配律、选择对并的分配律、交换律、选择对笛卡尔积的分配律、选择对并的分配律、选择对差的分配律选择对差的分配律”

162、尽可能把它移到树的叶端尽可能把它移到树的叶端(1)分解选择)分解选择(2)选择下移)选择下移2024/9/1186数据库系统第四章 关系系统及其查询优化 对每一个投影,利用对每一个投影,利用“投影的串接定律、选择和投影的投影的串接定律、选择和投影的交换律、投影对笛卡尔积的分配律、投影对并的分配律交换律、投影对笛卡尔积的分配律、投影对并的分配律”尽可能把它移到树的叶端尽可能把它移到树的叶端(3)投影下移)投影下移 利用利用“投影的串接定律、选择的串接定律、选择和投影的投影的串接定律、选择的串接定律、选择和投影的交换律交换律”把选择和投影合并成单个选择、单个投影、或选择把选择和投影合并成单个选择、

163、单个投影、或选择后跟投影等三种情况,使多个选择和后跟投影等三种情况,使多个选择和 / 或投影能同时执行、或或投影能同时执行、或在一次扫描中完成在一次扫描中完成(4)选择、投影合并)选择、投影合并2024/9/1187数据库系统第四章 关系系统及其查询优化 把上面得到的语法树分组:把上面得到的语法树分组: 每个二元运算和它的每个二元运算和它的 一元直接祖先一元直接祖先 为一组。若它的后代为一组。若它的后代直到叶子全是一元运算,则也将它们并入该组。直到叶子全是一元运算,则也将它们并入该组。 按照每组的求值应在其后代组求值之后进行的顺序为每组按照每组的求值应在其后代组求值之后进行的顺序为每组生成一个

164、程序,以产生整个表达式的求值程序。生成一个程序,以产生整个表达式的求值程序。(5)按点分组(每组只有一个二元运算)按点分组(每组只有一个二元运算)(6)生成程序)生成程序不超过别的不超过别的二元运算结点二元运算结点 但对于笛卡尔积,若后面(父结点)是不能与它结合为等但对于笛卡尔积,若后面(父结点)是不能与它结合为等值连接的选择运算时,其一直到叶子的一元运算结点需单独值连接的选择运算时,其一直到叶子的一元运算结点需单独算一组。算一组。 2024/9/1188数据库系统第四章 关系系统及其查询优化例子:考虑由以下关系组成的图书馆数据库例子:考虑由以下关系组成的图书馆数据库BOOKS(TITLE,A

165、UTHOR,PNAME,LC-NO)BORROWERS(NAME,ADDR,CITY,CARD-NO)LOANS(CARD-NO,LC-NO,DATE)借书证号借书证号图书编号图书编号查询:找出查询:找出2000年年01月月01日前借出书籍的书名和借书人姓名。日前借出书籍的书名和借书人姓名。借出日期借出日期用用SQL 语言可如下表达:语言可如下表达: SELECT TITLE,NAME FROM BOOKS,BORROWERS,LOANS WHERE BOOKS.LC-NO=LOANS.LC-NO AND BORROWERS.CARD-NO=LOANS.CARD-NO AND DATE 200

166、0-01-01;2024/9/1189数据库系统第四章 关系系统及其查询优化SELECT TITLE,NAMEFROM BOOKS,BORROWERS,LOANSWHERE BOOKS.LC-NO=LOANS.LC-NO AND BORROWERS.CARD-NO=LOANS.CARD-NO AND DATE 2000-01-01;把上述把上述SQL语句转化为关系代数表达式:语句转化为关系代数表达式:转化为投影转化为投影转化为连接转化为连接转化为选择转化为选择 (TITLE,NAMEDATE2000-01-01 ( BOOKS ( BORROWERS LOANS)2024/9/1190数据库系

167、统第四章 关系系统及其查询优化若把连接用笛卡尔积来实现,上式变为:若把连接用笛卡尔积来实现,上式变为:DATE2000-01-01 ( BOOKS ( BORROWERS LOANS) BOOKS.LC-NO=LOANS.LC-NO ANDBORROWERS.CARD-NO=LOANS.CARD-NO TITLE,AUTHOR,PNAME,LC-NO, (NAME,ADDR,CITY,CARD-NO,DATE (TITLE,NAME2024/9/1191数据库系统第四章 关系系统及其查询优化 TITLE,NAMEDATE2000-01-01 上述表达式的语法树上述表达式的语法树 LOANS B

168、OOKS.LC-NO=LOANS.LC-NO ANDBORROWERS.CARD-NO=LOANS.CARD-NO TITLE,AUTHOR,PNAME,LC-NO,NAME,ADDR,CITY,CARD-NO,DATE BOOKS BORROWERS根据算法第根据算法第1步,步,分解该选择分解该选择2024/9/1192数据库系统第四章 关系系统及其查询优化 TITLE,NAMEDATE2000-01-01 第第1步优化(分解选择)后的语法树步优化(分解选择)后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO TITLE,AUTHOR,PNAME,LC-NO,NAME,A

169、DDR,CITY,CARD-NO,DATE BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NO分解之后分解之后选择和投影选择和投影可以交换可以交换2024/9/1193数据库系统第四章 关系系统及其查询优化 TITLE,NAMEDATE2000-01-01 选择和投影交换后的语法树选择和投影交换后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO TITLE,AUTHOR,PNAME,LC-NO,NAME,ADDR,CITY,CARD-NO,DATE BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.C

170、ARD-NODATE2000-01-01 TITLE,AUTHOR,PNAME,LC-NO,NAME,ADDR,CITY,CARD-NO,DATEDATE2000-01-01 根据算法第根据算法第2步,步,该选择可下移该选择可下移该选择也可下移该选择也可下移2024/9/1194数据库系统第四章 关系系统及其查询优化 TITLE,NAME第第2步优化(选择下移)后的语法树步优化(选择下移)后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NO TITLE,AUTHOR,PNAME,L

171、C-NO,NAME,ADDR,CITY,CARD-NO,DATEDATE2000-01-01 这两个投这两个投影可以合影可以合并(串接)并(串接)2024/9/1195数据库系统第四章 关系系统及其查询优化 TITLE,NAME第第4步优化(合并投影)后的语法树步优化(合并投影)后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NODATE2000-01-01 该投影能否下移?该投影能否下移?不能!不能!怎么办?怎么办?2024/9/1196数据库系统第四章 关系系统及其查询优化 T

172、ITLE,NAME另一种形式的投影与选择交换后的语法树另一种形式的投影与选择交换后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NODATE2000-01-01 TITLE,NAME,BOOKS.LC-NO,LOANS.LC-NO该投影可下移该投影可下移2024/9/1197数据库系统第四章 关系系统及其查询优化 TITLE,NAME投影对笛卡尔积分配后的语法树投影对笛卡尔积分配后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO BOOKS BORROWERS

173、BORROWERS.CARD-NO=LOANS.CARD-NODATE2000-01-01 NAME,LOANS.LC-NO TITLE,BOOKS.LC-NO对该投影对该投影可同样可同样处理处理2024/9/1198数据库系统第四章 关系系统及其查询优化 TITLE,NAME第第3步优化(投影下移)后的语法树步优化(投影下移)后的语法树 LOANS BOOKS.LC-NO=LOANS.LC-NO BOOKS BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NODATE2000-01-01 NAME,LOANS.LC-NO NAME,CARD-NO LC-NO,C

174、ARD-NO TITLE,BOOKS.LC-NO2024/9/1199数据库系统第四章 关系系统及其查询优化 TITLE,NAME对结点分组:对结点分组: LOANS BOOKS.LC-NO=LOANS.LC-NO BORROWERS BORROWERS.CARD-NO=LOANS.CARD-NODATE2000-01-01 NAME,LOANS.LC-NO NAME,CARD-NO LC-NO,CARD-NO共分为二组共分为二组BOOKS TITLE,BOOKS.LC-NO2024/9/1200数据库系统第四章 关系系统及其查询优化3、优化的一般步骤、优化的一般步骤(1)把查询转换成某种内部

175、表示)把查询转换成某种内部表示 如语法树如语法树(2)按优化算法对语法树进行优化(标准形)按优化算法对语法树进行优化(标准形)(3)选择低层的存取路径)选择低层的存取路径 充分考虑索引、数据的存储分布,然后选取存储路径充分考虑索引、数据的存储分布,然后选取存储路径(4)生成查询计划,选择代价最小的)生成查询计划,选择代价最小的 如对连接运算,考虑各种实现策略,从中选出代价最小的如对连接运算,考虑各种实现策略,从中选出代价最小的本节开头本节开头本章开头本章开头作业:作业:1、42024/9/1201数据库系统第五章 关系数据理论1、掌握为什么不合适的关系模式会带来插入异常、删除异常、掌握为什么不

176、合适的关系模式会带来插入异常、删除异常、 存储异常、修改困难等严重问题存储异常、修改困难等严重问题2、深刻理解函数依赖、多值依赖等有关概念、深刻理解函数依赖、多值依赖等有关概念3、掌握关系的、掌握关系的1NF、2NF、3NF、BCNF、4NF的概念和特征的概念和特征4、掌握函数依赖的、掌握函数依赖的Armstrong公理系统、求属性集的闭包算法公理系统、求属性集的闭包算法 以及求极小函数依赖集的方法等以及求极小函数依赖集的方法等5、掌握模式分解的无损连接性和保持函数依赖性以及分解算法、掌握模式分解的无损连接性和保持函数依赖性以及分解算法1 为什么需要对关系模式规范化?为什么需要对关系模式规范化

177、?2 数据依赖数据依赖3 关系的范式关系的范式4 函数依赖的函数依赖的Armstrong公理系统公理系统5 关系模式的分解关系模式的分解本章要求:本章要求:本章内容:本章内容:请选择内容请选择内容返回返回2024/9/1202数据库系统数据库系统第五章 关系数据理论 网状、层次模型的数据库设计,主要凭设计者的经验直观网状、层次模型的数据库设计,主要凭设计者的经验直观地选择和确定实体集、属性以及实体间的联系。哪些实体应该地选择和确定实体集、属性以及实体间的联系。哪些实体应该合并或分解以及如何合并和分解、每个实体中应该包括哪些属合并或分解以及如何合并和分解、每个实体中应该包括哪些属性为宜、属性间的

178、联系如何确定和处理等一系列问题的解决是性为宜、属性间的联系如何确定和处理等一系列问题的解决是没有什么固定规则和理论可循的。没有什么固定规则和理论可循的。 一个基本的问题:一个基本的问题:给出一组数据,如何构造一个合适的数据给出一组数据,如何构造一个合适的数据模式模式? 例如:对关系模型,给了一组数据,应该构造几个关系?每例如:对关系模型,给了一组数据,应该构造几个关系?每个关系由哪些属性组成?个关系由哪些属性组成?这就是数据库逻辑设计问题这就是数据库逻辑设计问题1 问题的提出问题的提出2024/9/1203数据库系统数据库系统第五章 关系数据理论关系数据库的规范化理论关系数据库的规范化理论数据

179、库逻辑设计的有力工具数据库逻辑设计的有力工具 要考虑的几个问题:要考虑的几个问题: 为什么要规范化?为什么要规范化? 怎样规范化?怎样规范化? 规范化到什么程度后最合适?规范化到什么程度后最合适?这就是本章的主题这就是本章的主题 本节首先用一个例子来说明对关系模式为什么要规范化,本节首先用一个例子来说明对关系模式为什么要规范化,不经过规范化会产生什么样的结果。不经过规范化会产生什么样的结果。 关系数据库的设计是借助近代数学工具而提出来的,关系数据库的设计是借助近代数学工具而提出来的,形成形成了一整套定义、公理、定理及各种实用算法了一整套定义、公理、定理及各种实用算法,产生了确定、评,产生了确定

180、、评价关系数据库模式的好方法。价关系数据库模式的好方法。2024/9/1204数据库系统数据库系统第五章 关系数据理论例:假设车间考核职工完成生产定额的关系模式如下:例:假设车间考核职工完成生产定额的关系模式如下: W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任)比如设某工号某年月超额完成定额的比如设某工号某年月超额完成定额的20%,其记录的内容为:,其记录的内容为:(1001,98年年11月,张三,车工,月,张三,车工,180,20%,金工车间,李四),金工车间,李四)该关系的主键为?该关系的主键为? 工号工号 日期日期该关系模式

181、存在以下该关系模式存在以下四个严重问题四个严重问题:对同一个人来说,其姓名、工种、车间、车间主任等多次重复对同一个人来说,其姓名、工种、车间、车间主任等多次重复 1001,98年年08月,月,张三,车工,张三,车工,金工车间,李四金工车间,李四1001,98年年09月,月,张三,车工,张三,车工,金工车间,李四金工车间,李四1001,98年年10月,月,张三,车工,张三,车工,金工车间,李四金工车间,李四1001,98年年11月,月,张三,车工,张三,车工,金工车间,李四金工车间,李四 (1)数据冗余大)数据冗余大2024/9/1205数据库系统数据库系统第五章 关系数据理论(2)插入异常)插

182、入异常 若新调来一个职工并将他分配到某个车间,根据上述关若新调来一个职工并将他分配到某个车间,根据上述关系模式,在对该职工统计工作之前,他的信息是装不进数据系模式,在对该职工统计工作之前,他的信息是装不进数据库中的。因为他的日期值是空值,而日期是主键的属性之一,库中的。因为他的日期值是空值,而日期是主键的属性之一,不允许为空。不允许为空。(1005,NULL,天然,车工,天然,车工,NULL,NULL,金工车间,李四),金工车间,李四)应该存储的信息无法存储应该存储的信息无法存储(3)删除异常)删除异常不该删除的信息被删除不该删除的信息被删除 若想删除某人的所有定额完成情况,则该职工的其他信若

183、想删除某人的所有定额完成情况,则该职工的其他信息也都被删除。息也都被删除。 比如在比如在98年底要删除年底要删除97年以前的所有定额完成信息,则年以前的所有定额完成信息,则98年由于种种原因未参加现实工作的职工的所有信息全部被年由于种种原因未参加现实工作的职工的所有信息全部被删除。删除。2024/9/1206数据库系统数据库系统第五章 关系数据理论(4)修改困难,容易造成数据的不一致性)修改困难,容易造成数据的不一致性若某车间换了主任,则该车间所有职工的上述记录都要修改;若某车间换了主任,则该车间所有职工的上述记录都要修改;又如某人换了车间,则其工种、车间、车间主任等信息都要修改。又如某人换了

184、车间,则其工种、车间、车间主任等信息都要修改。修改工作量大;修改工作量大;即使漏改一处都会造成数据的不一致性;即使漏改一处都会造成数据的不一致性;(也称更新异常)(也称更新异常) 上例充分说明对关系模式若随意设计,其后果是严重的。上例充分说明对关系模式若随意设计,其后果是严重的。 本章将要讨论产生上述问题的原因以及解决办法,即如何改本章将要讨论产生上述问题的原因以及解决办法,即如何改造一个不好的关系模式。这就是规范化理论要解决的主要问题。造一个不好的关系模式。这就是规范化理论要解决的主要问题。2024/9/1207数据库系统数据库系统第五章 关系数据理论 比如,对于上述关系模式,若分解成下面三

185、个关系,则前面比如,对于上述关系模式,若分解成下面三个关系,则前面提到的几个问题将全部或部分地得到解决:提到的几个问题将全部或部分地得到解决:职工关系(工号,姓名,工种,车间号)职工关系(工号,姓名,工种,车间号)车间关系(车间号,车间名,车间主任)车间关系(车间号,车间名,车间主任)定额关系(工号,日期,定额,超额,车间号)定额关系(工号,日期,定额,超额,车间号)本节开头本节开头下一节下一节本章开头本章开头2024/9/1208数据库系统数据库系统第五章 关系数据理论 数据模型中我们讨论了实体间的联系,同时提到实体内部数据模型中我们讨论了实体间的联系,同时提到实体内部属性间也有联系。事实上

186、上一节中的问题都是属性间也有联系。事实上上一节中的问题都是由于属性间的联由于属性间的联系引起的系引起的。一、数据依赖一、数据依赖1、属性间的联系、属性间的联系:也是也是1:1,1:n,m:n三种三种 1:1联系联系:设:设A、B为某实体集中的两个属性的值集,如为某实体集中的两个属性的值集,如 果对于果对于A中的任一值,中的任一值,B中至多有一个值与之中至多有一个值与之 对应,且反之亦然。对应,且反之亦然。 1:n联系联系:设:设A、B为某实体集中的两个属性的值集,如为某实体集中的两个属性的值集,如 果对于果对于A中的任一值,中的任一值,B中有多个值(包括中有多个值(包括0个)个) 与之对应;而

187、对于与之对应;而对于B中的任一值,中的任一值,A中至多有中至多有 一个值与之对应。一个值与之对应。2 数据依赖数据依赖如:车间如:车间-主任主任如:队长如:队长-学号学号2024/9/1209数据库系统数据库系统第五章 关系数据理论 m:n联系联系:设:设A、B为某实体集中的两个属性的值集,为某实体集中的两个属性的值集, 如果对于如果对于A中的任一值,中的任一值,B中有多个值(包中有多个值(包 括括0个)与之对应,且反之亦然。个)与之对应,且反之亦然。如:学号如:学号-课程号课程号实体间的联系表示实体之间相互依赖又相互制约的关系;实体间的联系表示实体之间相互依赖又相互制约的关系;属性间的联系表

188、示属性之间相互依赖又相互制约的关系。属性间的联系表示属性之间相互依赖又相互制约的关系。2、数据依赖、数据依赖 通过一个关系中属性间值的相互关联(主要体现于值的通过一个关系中属性间值的相互关联(主要体现于值的相等与否)体现出来的数据间的相互联系。相等与否)体现出来的数据间的相互联系。两类最重要的数据依赖两类最重要的数据依赖函数依赖函数依赖多值依赖多值依赖(是数据内在的性质,语义的体现)(是数据内在的性质,语义的体现)2024/9/1210数据库系统数据库系统第五章 关系数据理论二、关系的形式化定义二、关系的形式化定义1、关系的两个主要方面、关系的两个主要方面 语法:属性的描述语法:属性的描述 语

189、义:数据依赖语义:数据依赖2、关系模式、关系模式: R 关系名关系名 属性组属性组U上的一组数据依赖上的一组数据依赖3、关系:、关系: 对关系模式对关系模式 R,当且仅当,当且仅当U上的一个关系上的一个关系r满足满足F时,称时,称r为关系模式为关系模式 R的一个关系。的一个关系。2024/9/1211数据库系统数据库系统第五章 关系数据理论三、函数依赖三、函数依赖 不严格地讲,函数依赖指的是一组属性值唯一决定另不严格地讲,函数依赖指的是一组属性值唯一决定另一组属性值的这种数据依赖。一组属性值的这种数据依赖。如学生关系中,当学号确定后,其姓名也就唯一确定了。如学生关系中,当学号确定后,其姓名也就

190、唯一确定了。 选课关系中,当学号和课程号确定后,其成绩也就唯一确选课关系中,当学号和课程号确定后,其成绩也就唯一确定了。定了。1、函数依赖、函数依赖(Functional Dependency,缩写,缩写FD):): 设设 R(U)是属性集是属性集U上的关系模式,上的关系模式,X、Y是是U的子集。若的子集。若对于对于R中的任意关系中的任意关系 r,对于,对于 r中的任意两个元组中的任意两个元组u、v都有都有 uX=vX uY=vY成立,则称成立,则称X函数决定函数决定Y,或称,或称Y函数依赖于函数依赖于X,记作,记作XY。称称X为为决定因素决定因素。2024/9/1212数据库系统数据库系统第

191、五章 关系数据理论 说明:说明: 函数依赖类似于变量间的单值函数关系(一个自变量只函数依赖类似于变量间的单值函数关系(一个自变量只能对应一个能对应一个 函数值),因此也称为函数值),因此也称为单值函数依赖;单值函数依赖; 若若XY且且YX ,则记作,则记作 XY; 若若Y不函数依赖于不函数依赖于X,则记作,则记作 X例:对学生关系例:对学生关系 S(S#,SN,SD,SA),有),有 S# SN, S# SD, S# SA 对选课关系对选课关系 SC(S#,C#,G),有(),有(S#,C# ) GY函数依赖是指关系模式函数依赖是指关系模式R的任的任一关系都要满足的约束条件一关系都要满足的约束

192、条件2024/9/1213数据库系统数据库系统第五章 关系数据理论3、函数依赖分类、函数依赖分类 (1)非平凡的函数依赖非平凡的函数依赖: XY,但,但Y X。 (2)平凡的函数依赖平凡的函数依赖: XY,但,但Y X。 (3)完全函数依赖:完全函数依赖:XY,且对任意的,且对任意的X X,都有,都有 记作记作 X Yf2、函数依赖与属性间的联系之关系、函数依赖与属性间的联系之关系 (1)若)若X、Y之间是之间是“1:1联系联系”, 则存在函数依赖则存在函数依赖XY和和 YX, 即即XY. (2)若若X、Y之间是之间是“m:1联系联系”, 则存在函数依赖关系则存在函数依赖关系XY。 (3)若若

193、X、Y之间是之间是“m:n联系联系”, 则则X、Y之间不存在函数之间不存在函数 依赖关系。依赖关系。如在如在 SC(S#,C#,G)中,()中,(S#,C#) G,Y。XG,C#G,因此(,因此(S#,C#)fG。但但S#2024/9/1214数据库系统数据库系统第五章 关系数据理论(4)部分部分函数依赖函数依赖: XY,但,但Y不完全函数依赖于不完全函数依赖于X。记作记作 X Yp如在如在 S(S#,SN,SD,SA)中,因为)中,因为 S#SD,(S#,SN) SDp所以所以(5)传递函数依赖传递函数依赖:若:若XY,Y X,YZ,且且Z (X Y)= ,则称,则称Z对对X是是传递函数依赖

194、。传递函数依赖。 例如,在学生关系模式例如,在学生关系模式 S(S#,SN,SD,SA)中,增)中,增加属性加属性SL(系的位置),则(系的位置),则 S#SD,SDSL,SD S#,所以,所以 S# SL。传递传递2024/9/1215数据库系统数据库系统第五章 关系数据理论四、多值依赖四、多值依赖 (教材(教材P178)1、例子、例子:设学校中一门课由多位教员讲授,他们使用相同:设学校中一门课由多位教员讲授,他们使用相同 的参考书,比如:的参考书,比如: “物理物理”,教员为汪洋、大海,参考书为,教员为汪洋、大海,参考书为普通物理学普通物理学、 光学原理光学原理、 物理习题集物理习题集;

195、“数学数学”,教员为大海、白云,参考书为,教员为大海、白云,参考书为数学分析数学分析、 微分方程微分方程、 高等代数高等代数; “计算计算”,教员为蓝天、白云,参考书为,教员为蓝天、白云,参考书为数学分析数学分析、 2024/9/1216数据库系统数据库系统第五章 关系数据理论用模式为用模式为 TEACH(C,T,B)的关系表示上述数据:)的关系表示上述数据:课程课程C 教员教员T 参考书参考书B物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理

196、 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微分方程微分方程数学数学 白云白云 高等代数高等代数计算计算 白云白云 数学分析数学分析 该关系模式中,任该关系模式中,任何两个属性都不能函何两个属性都不能函数决定第三个属性。数决定第三个属性。 该关系模式存在该关系模式存在冗余大、增删不方便冗余大、增删不方便等问题。等问题。没有函数依赖,没有函数依赖,需要另行分析需要另行分析2024/9/1217数据库系统数据库系统第五章 关系数据理论课程课程C 教

197、员教员T 参考书参考书B物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微分方程微分方程数学数学 白云白云 高等代数高等代数计算计算 白云白云 数学分析数学分析 在该关系模式中,对在该关系模式中,对于一个(物理,普通物理于一个(物理,普通物理学),有一

198、组教员学),有一组教员汪洋,汪洋,大海大海,而对于另一个(物,而对于另一个(物理,光学原理),对应的理,光学原理),对应的教员仍是教员仍是汪洋,大海汪洋,大海。因此,所对应的教员只与因此,所对应的教员只与课程的值有关而与参考书课程的值有关而与参考书的值无关。的值无关。这是产生问题的原因吗这是产生问题的原因吗?2024/9/1218数据库系统数据库系统第五章 关系数据理论2、多值依赖、多值依赖(MultiValued Dependency,缩写为,缩写为MVD) 设设 R(U)是属性集是属性集U上的关系模式,上的关系模式,X、Y、Z是是U的子集,的子集,且且Z=U X Y,多值依赖,多值依赖XY

199、成立当且仅当对成立当且仅当对R(U)的任一的任一关系关系r,任给的一对(,任给的一对(x,z)值有一组)值有一组Y的值,这组值仅仅取决的值,这组值仅仅取决于于x值而与值而与z值无关。值无关。 称称X多值决定多值决定Y或或Y多值依赖于多值依赖于X。例如,在关系模式例如,在关系模式TEACH中中 有有 CT物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程

200、微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析计算计算 白云白云 数学分析数学分析 直观上看,若直观上看,若XY,则则X的一个值唯一决定一组的一个值唯一决定一组Y值,且这组值与值,且这组值与X、Y之外之外的属性值无关的属性值无关课程课程C 教员教员T 参考书参考书B2024/9/1219数据库系统数据库系统第五章 关系数据理论多值依赖的另一等价定义多值依赖的另一等价定义: 多值依赖多值依赖XY成立当且仅当对成立当且仅当对R(U)的任一关系的任一关系r,若,若存在元组存在元组s、t使得使得sX=tX,则必存在元组,则必存在元组w、v r(w、v可以与可以与s、t

201、相同),使得相同),使得wX=vX=tX,而,而wY=tY,wZ=sZ,vY=sY,vZ=tZ。X Y ZtswvwYsYtYvYtZvZsZwZ左图直观显示,左图直观显示,x决定一组决定一组y值,值,这组值与这组值与z无关无关交换交换s、t的的Y值值所得新元组仍在所得新元组仍在r中中2024/9/1220数据库系统数据库系统第五章 关系数据理论由前面例子,可看出由前面例子,可看出X、Y、Z之间有下述关系:之间有下述关系:物理物理汪洋汪洋 大海大海普通物理学普通物理学 光学原理光学原理 物理习题集物理习题集数学数学大海大海 白云白云数学分析数学分析 微分方程微分方程 高等代数高等代数完全二分图

202、完全二分图2024/9/1221数据库系统数据库系统第五章 关系数据理论 3、多值依赖的性质:、多值依赖的性质:(1)对称性:若)对称性:若 XY, Z=U X Y,则,则 XZ。(2)函数依赖可看成是多值依赖的特例:若)函数依赖可看成是多值依赖的特例:若 XY,则,则 XY (3)若)若U=XY(表示(表示X Y),则),则 XY显然成立。显然成立。 (这种多值依赖无任何实际意义,故称为(这种多值依赖无任何实际意义,故称为 平凡的多值依赖平凡的多值依赖 )4、多值依赖与函数依赖的区别、多值依赖与函数依赖的区别 (1)函数依赖)函数依赖XY的有效性仅取决于的有效性仅取决于X、Y,与,与X、Y之

203、外之外的属性无关:的属性无关:XY在在 (R)上成立)上成立 XY在在 (R)上成立)上成立XYW其中其中W满足满足 XY W U(U是关系模式是关系模式R的属性集)。的属性集)。 X是否函数决定是否函数决定Y与这一部分属性无关与这一部分属性无关X Y Z R(U):):W2024/9/1222数据库系统数据库系统第五章 关系数据理论多值依赖多值依赖XY的有效性与的有效性与X、Y之外的属性范围有关:之外的属性范围有关: 若若XY在在U上成立,则在上成立,则在W( XY W U)上也成立,)上也成立, 但反之不然。但反之不然。可缩小范围但不一定能扩大范围可缩小范围但不一定能扩大范围 X是否多值决

204、定是否多值决定Y与这一部分属性密切相关与这一部分属性密切相关X Y Z R(U):):W X YR(W):):WXY在在U上成立上成立XY在在W上也成立上也成立反之反之不成立不成立2024/9/1223数据库系统数据库系统第五章 关系数据理论 例如,在前面的例子中,若增加属性例如,在前面的例子中,若增加属性“教室教室”(R),则在),则在C,T,B,R上上CT不再成立。因为若汪洋在一号教室上不再成立。因为若汪洋在一号教室上物理课,大海在二号教室上物理课,关系中会有下述两个元组:物理课,大海在二号教室上物理课,关系中会有下述两个元组:物理物理 汪洋汪洋 普通物理学普通物理学 一号教室一号教室 物

205、理物理 大海大海 普通物理学普通物理学 二号教室二号教室 但交换汪洋和大海但交换汪洋和大海后的两个元组不存在后的两个元组不存在XY在在U上也成立上也成立XY在在W上成立,上成立, 不一定有不一定有CTWR(2)对函数依赖,若)对函数依赖,若XY,则对,则对Y的任意子集的任意子集Y,都有,都有XY 对多值依赖,没有上述性质。对多值依赖,没有上述性质。XY成立成立即即 不能保证不能保证 XY成立成立2024/9/1224数据库系统数据库系统第五章 关系数据理论五、关键字五、关键字从函数依赖的角度给关键字一个形式化的定义。从函数依赖的角度给关键字一个形式化的定义。1、候选关键字和主关键字、候选关键字

206、和主关键字: 设设K是是R中的属性或属性组合,中的属性或属性组合,若若 K U,则称,则称K为为U的的候选关键字(候选码)候选关键字(候选码);f若候选关键字多于一个,则选定其中的一个作为若候选关键字多于一个,则选定其中的一个作为主关键字主关键字(主键、主码)(主键、主码)。比以前的直观定义比以前的直观定义准确、严谨准确、严谨物理物理 汪洋汪洋 普通物理学普通物理学 一号教室一号教室 物理物理 大海大海 普通物理学普通物理学 二号教室二号教室 在在U上上C T,R,但但C T不成立,因不成立,因为为交换汪洋和大海后交换汪洋和大海后的两个元组不存在的两个元组不存在CTR例:例:2024/9/12

207、25数据库系统数据库系统第五章 关系数据理论2、外键(外部码)、外键(外部码) 若若R中的属性或属性组合中的属性或属性组合X不是不是R的关键字,但的关键字,但X是是另一个关系的关键字,则称另一个关系的关键字,则称X是是R的外键。的外键。主键与外键提供了一个表示关系间联系的手段主键与外键提供了一个表示关系间联系的手段例:借书证关系例:借书证关系 C(CARD#,S#,SN,SD) CARD#、S#都是候选关键字都是候选关键字 通常选择通常选择CARD#作为主键作为主键 K能唯一确定能唯一确定 一个元组一个元组 K中无多余属性中无多余属性3、全键(、全键(All-key,全码),全码) 若若R的整

208、个属性组是关键字,即的整个属性组是关键字,即U U,则称,则称U是全键。是全键。f2024/9/1226数据库系统数据库系统第五章 关系数据理论例:关系模式例:关系模式 R(P,W,A)演奏者演奏者作品作品 听众听众(P,W,A)是)是R的全键。的全键。注意:注意: 一般来讲,全键是没有什一般来讲,全键是没有什么实际意义的。主键包含的么实际意义的。主键包含的属性应尽可能少为好。属性应尽可能少为好。4、主属性和非主属性、主属性和非主属性 主属性主属性: 包含在某个候选关键字中的属性包含在某个候选关键字中的属性 非主属性非主属性:不包含在任何侯选关键字中的属性:不包含在任何侯选关键字中的属性例:例

209、:SC(S#,C#,G)中,)中, (S#,C#)是关键字,故)是关键字,故S#,C#是主属性是主属性 G不包含在任何关键字中不包含在任何关键字中 ,故,故G是非主属性。是非主属性。2024/9/1227数据库系统数据库系统第五章 关系数据理论本节讨论下述问题:本节讨论下述问题: 如何根据关系模式属性间的数据依赖情况来判断它是否如何根据关系模式属性间的数据依赖情况来判断它是否具有某些不合适的性质?具有某些不合适的性质? 如何将具有不合适性质的关系模式转换为更合适的形式如何将具有不合适性质的关系模式转换为更合适的形式?一、规范化一、规范化1、范式、范式(Normal Form) 按关系模式所具有

210、的数据依赖性质对关系模式的分类。按关系模式所具有的数据依赖性质对关系模式的分类。也就是也就是关系的规范化程度关系的规范化程度。 满足不同程度要求的为不同范式。满足不同程度要求的为不同范式。2、规范化、规范化 把一个低一级范式的关系模式通过模式分解转化为若把一个低一级范式的关系模式通过模式分解转化为若干个高一级的关系模式的过程。干个高一级的关系模式的过程。3 关系的范式关系的范式2024/9/1228数据库系统数据库系统第五章 关系数据理论二、第一范式(二、第一范式(1NF) 1、定义、定义:关系的每个分量必须是不可再分的数据项关系的每个分量必须是不可再分的数据项。 记作记作R 1NF。(。(每

211、个属性必须是原子的)每个属性必须是原子的) 2、说明、说明: 属性不可再分(不允许出现嵌套的属性定义)属性不可再分(不允许出现嵌套的属性定义) 属性下的值不可再分(不允许出现多个值)属性下的值不可再分(不允许出现多个值) 这是对关系的最起码的要求,但远远不够。这是对关系的最起码的要求,但远远不够。 (满足(满足1NF的关系称为的关系称为规范关系规范关系)例:职工情况表例:职工情况表职工职工 号号部门部门工工 资资基本工资基本工资奖金奖金例:借书表例:借书表借书人借书人 所借书名所借书名 借书日期借书日期张三张三B1B2B3D1D2D3李四李四B2B5D3这两个表这两个表都可变为都可变为规范关系

212、规范关系2024/9/1229数据库系统数据库系统第五章 关系数据理论例:车间考核职工完成生产定额的关系模式:例:车间考核职工完成生产定额的关系模式:W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任)主属性主属性非主属性非主属性 显然显然W 1NF,但第一节中我们已讨论知它有,但第一节中我们已讨论知它有 四个严重问题四个严重问题 工号工号函数决定非主属性姓名、工种、车间、车间主任。因函数决定非主属性姓名、工种、车间、车间主任。因此,关键字(工号,日期)部分函数决定这些属性。此,关键字(工号,日期)部分函数决定这些属性。 这显然是产生冗

213、余的一个主要原因。这显然是产生冗余的一个主要原因。3、仅属于、仅属于1NF的关系模式可能会产生的问题:的关系模式可能会产生的问题:四个严重问题四个严重问题数据冗余数据冗余插入异常插入异常删除异常删除异常修改困难修改困难因此仅是第一范式的关系模式完全不能满足需要。因此仅是第一范式的关系模式完全不能满足需要。 分析出现问题的原因:分析出现问题的原因:三、第二范式(三、第二范式(2NF)1、定义、定义:若:若 R 1NF,且每一非主属性都完全函数依赖于,且每一非主属性都完全函数依赖于R的的 码,则称码,则称R是第二范式,记作是第二范式,记作R 2NF。2024/9/1230数据库系统数据库系统第五章

214、 关系数据理论函数依赖:函数依赖: (S#,C#) G S# SL(S#,C#) SD(S#,C#) SL2、属于、属于1NF但不属于但不属于2NF的例子的例子: 关系模式关系模式W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任) 关系模式关系模式S_L_C(S#,SD,SL,C#,G)学生宿舍楼,且每个系学生只住一栋楼学生宿舍楼,且每个系学生只住一栋楼关键字:(关键字:(S#,C#)fpp传递传递S# SD,SD SL,GSDSLS#C#关键字关键字完全完全部分部分 对关系模式对关系模式S_L_C,同样存在同样存在数据冗余大、插入异

215、常、数据冗余大、插入异常、删除异常、修改困难删除异常、修改困难等问题。(产生问题的原因同等问题。(产生问题的原因同W)2024/9/1231数据库系统数据库系统第五章 关系数据理论3、解决办法:用投影分解、解决办法:用投影分解 消除非主属性对关键字的部分函数依赖转换为消除非主属性对关键字的部分函数依赖转换为2NFGSDSLS#C#关键字关键字部分部分GS#C#SDSLS#S_L SC 2NF 2NF分解之后,与分解之后,与S_L_C相比,相比,SC和和S_L性质如何性质如何?2024/9/1232数据库系统数据库系统第五章 关系数据理论分解之后,与分解之后,与S_L_C相比:相比: 数据冗余减

216、小数据冗余减小 (原来伴随学生所学的每门课都要存储一遍(原来伴随学生所学的每门课都要存储一遍SD、SL的值);的值); 没选课的学生信息可以存储;没选课的学生信息可以存储; 删除选课记录不会误删学生其他信息;删除选课记录不会误删学生其他信息; 冗余数据的减少使得修改变得容易些。冗余数据的减少使得修改变得容易些。S_L还有问题吗还有问题吗?1NF的上述四个问题得到了部分解决的上述四个问题得到了部分解决 分解前分解前 S_L_C(S#,SD,SL,C#,G)分解后分解后 SC(S#,C#,G) S_L(S#,SD,SL)2024/9/1233数据库系统数据库系统第五章 关系数据理论4、仅属于、仅属

217、于2NF的关系模式可能会产生的问题的关系模式可能会产生的问题(4)修改困难)修改困难(2)插入异常)插入异常(3)删除异常)删除异常(1)数据冗余)数据冗余 S_L(S#,SD,SL)数据冗余仍然较大:数据冗余仍然较大:SL的值重复严重的值重复严重若一个系刚成立但尚无学生,该系名称等无法存储若一个系刚成立但尚无学生,该系名称等无法存储若一个系的学生全部毕业,删除全部学生数据的同时把若一个系的学生全部毕业,删除全部学生数据的同时把该系的数据(如系名等)也都删除了该系的数据(如系名等)也都删除了数据冗余大势必造成修改困难数据冗余大势必造成修改困难(这可以说是个必然联系)(这可以说是个必然联系) 可

218、能的原因可能的原因:存在传递函数依赖存在传递函数依赖 S#SL2024/9/1234数据库系统数据库系统第五章 关系数据理论四、第三范式(四、第三范式(3NF) 1、定义、定义;若关系模式;若关系模式 R 1NF,并且,并且R中不存在码中不存在码X、属性组、属性组Y和非主属性和非主属性Z(Z Y)使得)使得XY( Y X),),Y Z成立,则称成立,则称 R 3NF。2、定理、定理:若:若 R 3NF,则,则 R 2NF。分析分析R的每一非主属性都完全函数依赖于码的每一非主属性都完全函数依赖于码要证要证R 2NF不存在任何非主属性部分函数依赖于码不存在任何非主属性部分函数依赖于码 由由3NF的

219、定义,的定义,若若R 3NF , 则则R中不存在码中不存在码X、属性组、属性组Y和非主属性和非主属性Z(Z Y)使得)使得XY( Y X),),Y Z成立成立希望推出希望推出只需证:若存在非主属性部分函数依赖于码只需证:若存在非主属性部分函数依赖于码R R 3NF3NF2024/9/1235数据库系统数据库系统第五章 关系数据理论证明证明2、定理、定理:若:若 R 3NF,则,则 R 2NF。设设A是是R的一个非主属性,的一个非主属性,K是是R的码,且的码,且 KpA则存在则存在 K K,使得,使得KA。故有。故有 K K ,KA。要找要找Y,满足,满足KY,Y K,YA因为一个候选关键字不可

220、能函数依赖于它的真子集,因为一个候选关键字不可能函数依赖于它的真子集, 所以有所以有 K K.四、第三范式(四、第三范式(3NF) 1、定义、定义;若关系模式;若关系模式 R 1NF,并且,并且R中不存在码中不存在码X、属性组、属性组Y和非主属性和非主属性Z(Z Y)使得)使得XY( Y X),),Y Z成立,则称成立,则称 R 3NF。又因为又因为A是非主属性,是非主属性,K是码,且是码,且K K,故,故 A K。所以所以R 3NF。只需证:若存在非主属性部分函数依赖于码只需证:若存在非主属性部分函数依赖于码R R 3NF3NF2024/9/1236数据库系统数据库系统第五章 关系数据理论3

221、、说明、说明 根据以上证明,也可这样定义根据以上证明,也可这样定义3NF: 若若 R 2NF,并且,并且R中不存在任何非主属性传递函数中不存在任何非主属性传递函数依依 赖于赖于R的码,则称的码,则称R 3NF。 若若R中中U是全键,则一定有是全键,则一定有 R 3NF。4、属于、属于2NF但不属于但不属于3NF的例子的例子: 关系模式关系模式S_L(S#,SD,SL)5、解决办法:用投影分解、解决办法:用投影分解 消除非主属性对关键字的传递函数依赖,转换为消除非主属性对关键字的传递函数依赖,转换为3NFSDSLS#传递传递如将如将S_L分解为分解为: S_D(S#,SD) D_L(SD,SL)

222、SDSLS#SD2024/9/1237数据库系统数据库系统第五章 关系数据理论6、仅属于、仅属于3NF的关系模式可能会产生的问题的关系模式可能会产生的问题 由上可知,部分函数依赖和传递函数依赖是产生异常的由上可知,部分函数依赖和传递函数依赖是产生异常的两个重要原因。两个重要原因。 3NF中不存在非主属性对于关键字的部分函数依赖和传递中不存在非主属性对于关键字的部分函数依赖和传递函数依赖,因此具有较好的性质。函数依赖,因此具有较好的性质。 通常设计关系模式时至少应该是属于通常设计关系模式时至少应该是属于3NF的的。 虽说虽说3NF是广泛使用的一种关系范式,但是广泛使用的一种关系范式,但3NF仍然

223、存在某仍然存在某些些“异常异常”。例:关系模式例:关系模式 R(S,T,J)学生学生教师教师课程课程每个教师只教一门课,每个教师只教一门课,每门课有若干教师,学每门课有若干教师,学生选定某门课就对应固生选定某门课就对应固定的教师。定的教师。2024/9/1238数据库系统数据库系统第五章 关系数据理论例:关系模式例:关系模式 R(S,T,J) J 重复,产生冗余,重复,产生冗余,带来可能的不一致性等问题带来可能的不一致性等问题函数依赖:(函数依赖:(S,J) T; (S,T) J;T J候选关键字:(候选关键字:(S,J);();(S,T)R中无非主属性,显然中无非主属性,显然R 3NF。 S

224、 T J 可能的原因:可能的原因:R中存在部分函数依赖中存在部分函数依赖 (S,T) J。(S,T)因为这是关键字因为这是关键字也是传递函数依赖也是传递函数依赖学生学生1 教师教师1 课程课程1 学生学生K 教师教师1 课程课程1学生学生L 教师教师2 课程课程1 学生学生M 教师教师2 课程课程1学生学生1 教师教师3 课程课程2 学生学生K 教师教师3 课程课程2 2024/9/1239数据库系统数据库系统第五章 关系数据理论 由例子可以看出,虽然由例子可以看出,虽然3NF消除了一大类消除了一大类数据冗余问题(冗余也是产生异常操作的直接数据冗余问题(冗余也是产生异常操作的直接原因),但这种

225、数据冗余是非主属性下的冗余。原因),但这种数据冗余是非主属性下的冗余。3NF并没有涉及主属性下的数据冗余问题并没有涉及主属性下的数据冗余问题。2024/9/1240数据库系统数据库系统第五章 关系数据理论五、五、Boyce-Codd范式(范式(BCNF)1、定义、定义:若:若R 1NF,且对任何非平凡的函数依赖,且对任何非平凡的函数依赖XY, X必包含码。则必包含码。则R BCNF。即每一决定因素都包含码即每一决定因素都包含码2、另一种等价的定义、另一种等价的定义: 若若 R 1NF,并且,并且R中不存中不存 在在任何属性任何属性传递函数依赖于传递函数依赖于R的某个码,则称的某个码,则称R B

226、CNF。证明证明 (1)定义定义等价定义等价定义反证法:假设反证法:假设R中存在属性中存在属性Z传递函数依赖于码传递函数依赖于码X, 则必存在属性组则必存在属性组Y,使得,使得即要证:即要证:若对任何非平凡的函数依赖若对任何非平凡的函数依赖XY,X必包含码,必包含码, 则则R中不存在任何属性传递函数依赖于中不存在任何属性传递函数依赖于R的某个码。的某个码。X Y,Y X,Y Z。显然显然Y不是码,也不包含码,矛盾。不是码,也不包含码,矛盾。2024/9/1241数据库系统数据库系统第五章 关系数据理论(2)等价定义等价定义定义定义仍用反证法:假设存在非平凡函数依赖仍用反证法:假设存在非平凡函数

227、依赖XY,X不包含码,不包含码,设设X是一关键字,则是一关键字,则X X, X X,因此,因此 X Y,矛盾。矛盾。传递传递证毕证毕3、说明、说明若若 R 1NF,并且,并且R中不存在中不存在任何非主属性任何非主属性传递函数依赖于传递函数依赖于R的某个码,则称的某个码,则称 R 3NF。 若若R BCNF,则,则R 3NF。 (也称(也称BCNF为为修正的修正的3NF) BCNF又消除了主属性对码的部分函数依赖和传递函数依赖。又消除了主属性对码的部分函数依赖和传递函数依赖。 从完全函数依赖的观点看,属于从完全函数依赖的观点看,属于BCNF的关系模式满足:的关系模式满足: 所有非主属性对每一个码

228、都是完全函数依赖;所有非主属性对每一个码都是完全函数依赖; 所有主属性对每一个不包含它的码也是完全函数依赖;所有主属性对每一个不包含它的码也是完全函数依赖; 没有任何属性完全函数依赖不是码的任何一组属性。没有任何属性完全函数依赖不是码的任何一组属性。2024/9/1242数据库系统数据库系统第五章 关系数据理论 在函数依赖的范畴内在函数依赖的范畴内,BCNF已做到彻底的分离,消除了插已做到彻底的分离,消除了插 入异常、删除异常(入异常、删除异常(3NF的的“不彻底性不彻底性”在于可能存在主在于可能存在主 属性对关键字的部分函数依赖和传递函数依赖)。属性对关键字的部分函数依赖和传递函数依赖)。4

229、、属于、属于3NF但不属于但不属于BCNF的例子的例子: 关系模式关系模式 R(S,T,J)码:(码:(S,T);();(S,J)函数依赖:(函数依赖:(S,J) T;(;(S,T) J;T J因为因为J部分函数依赖于码(部分函数依赖于码(S,T),或),或T是决定因素,但是决定因素,但T不包含码。故不包含码。故R不属于不属于BCNF。5、解决办法:用投影分解、解决办法:用投影分解 消除主属性对码的部分或传递函数依赖,转换为消除主属性对码的部分或传递函数依赖,转换为BCNF。将将R(S,T,J)分解为:)分解为: R1(S,T) R2(T,J)2024/9/1243数据库系统数据库系统第五章

230、关系数据理论6、仅属于、仅属于BCNF的关系模式可能会产生的问题的关系模式可能会产生的问题以前面讨论过的关系模式以前面讨论过的关系模式 TEACH(C,T,B)为例)为例课程课程 教员教员 参考书参考书物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微

231、分方程微分方程数学数学 白云白云 高等代数高等代数 课程课程C 教员教员T 参考书参考书B TEACH的关键字是的关键字是(C,T,B),即全键。),即全键。因此因此 TEACH BCNF问题:冗余大,问题:冗余大, 增、删不便增、删不便原因:存在多值依赖原因:存在多值依赖2024/9/1244数据库系统数据库系统第五章 关系数据理论六、第四范式(六、第四范式(4NF)1、定义、定义:设:设R 1NF,若对于,若对于R的每个非平凡的多值依赖的每个非平凡的多值依赖 XY(Y X),),X都包含码,那么称都包含码,那么称 R 4NF。2、定理、定理:若:若 R 4NF,则,则 R BCNF。3、属

232、于、属于BCNF但不属于但不属于4NF的例子的例子: 关系模式关系模式 TEACH(C,T,B) (存在非平凡多值依赖(存在非平凡多值依赖CT,而,而C不是关键字)不是关键字)全码全码4、解决办法:用投影分解、解决办法:用投影分解 消除不合适的多值依赖,转换为消除不合适的多值依赖,转换为4NF对于对于TEACH(C,T,B)分解为:)分解为: C-T(C,T) C-B(C,B)2024/9/1245数据库系统数据库系统第五章 关系数据理论1、规范化的目的、规范化的目的 解决解决 数据冗余、插入异常、删除异常、修改困难数据冗余、插入异常、删除异常、修改困难 等问题等问题七、范式小结七、范式小结2

233、、规范化的基本思想、规范化的基本思想 逐步消除不合适的数据依赖,让一个关系描述一个概念、逐步消除不合适的数据依赖,让一个关系描述一个概念、一个实体或实体间的一种联系。即一个实体或实体间的一种联系。即“一事一地一事一地”的模式设计的模式设计原则。原则。2024/9/1246数据库系统数据库系统第五章 关系数据理论3、范式、范式1NF2NF3NFBCNF4NF消除消除非主属性非主属性对码的对码的部分部分函数依赖函数依赖消除消除非主属性非主属性对码的对码的传递传递函数依赖函数依赖消除消除主属性主属性对码的对码的部分和传递部分和传递函数依赖函数依赖消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖

234、的多值依赖消除决消除决定因素定因素非码的非码的非平凡非平凡函数依函数依赖赖2024/9/1247数据库系统数据库系统第五章 关系数据理论范式间的关系:范式间的关系:1NF2NF3NFBCNF4NF5NF4、规范化的过程、规范化的过程 对关系模式分解,把对关系模式分解,把一个低一级关系模式分解一个低一级关系模式分解成若干个高一级的关系模成若干个高一级的关系模式。式。5、规范化与操作效率、规范化与操作效率 片面追求高级的模式,片面追求高级的模式,会使数据库操作效率降低会使数据库操作效率降低本节开头本节开头下一节下一节本章开头本章开头2024/9/1248数据库系统数据库系统第五章 关系数据理论 上

235、一节给出了范式的定义,并用例子说明了如何确定一个上一节给出了范式的定义,并用例子说明了如何确定一个关系模式属于第几范式以及如何把低一级的模式分解成高一级关系模式属于第几范式以及如何把低一级的模式分解成高一级的模式,但都是直观的方法。的模式,但都是直观的方法。 本节及下节将从理论上探讨:本节及下节将从理论上探讨: 如何确定一个关系模式的极小函数依赖集?如何确定一个关系模式的极小函数依赖集? 如何分解关系模式?如何分解关系模式?一、一、Armstrong公理系统公理系统 模式分解算法的理论基础模式分解算法的理论基础 问题:问题:对于给定的一组函数依赖,如何判断其它函数依对于给定的一组函数依赖,如何

236、判断其它函数依赖是否成立?或者说哪些函数依赖是不独立的?如:对赖是否成立?或者说哪些函数依赖是不独立的?如:对关系模式关系模式R有:有:AB,BC。 问:问:AC是否成立?是否成立?4 函数依赖的函数依赖的Armstrong公理系统公理系统2024/9/1249数据库系统数据库系统第五章 关系数据理论1、逻辑蕴涵、逻辑蕴涵 设设F是关系模式是关系模式R的函数依赖集,的函数依赖集,X、Y是是R的属性的属性子集。如果在子集。如果在R上函数依赖上函数依赖XY成立,则称成立,则称F逻辑蕴涵逻辑蕴涵XY。即对即对R的任一关系的任一关系r,对,对r中的任意两元组中的任意两元组t、s,若若tX=sX,则,则

237、tY=sY 下面将会看到(我们的本意也是如此),可以用下述方式下面将会看到(我们的本意也是如此),可以用下述方式来表述逻辑蕴涵:来表述逻辑蕴涵: 若从若从F中的函数依赖能够推出中的函数依赖能够推出XY,则,则F逻辑蕴涵逻辑蕴涵XY。2、Armstrong公理公理 对关系模式对关系模式R,有如下的推理规则:,有如下的推理规则:A1、自反律(、自反律(Reflexivity):若):若Y X U,则,则XY为为F所蕴涵。所蕴涵。 简写:若简写:若Y X,则,则XY2024/9/1250数据库系统数据库系统第五章 关系数据理论A2、增广律(、增广律(Augmentation):若):若XY为为F所蕴

238、涵,且所蕴涵,且Z U, 则则XZYZ为为F所蕴涵。所蕴涵。A3、传递律(、传递律(Transitivity):若):若XY和和YZ为为F所蕴涵,所蕴涵, 则则XZ为为F所蕴涵。所蕴涵。简写:若简写:若XY,则,则XZYZ简写:若简写:若XY、Y Z,则,则XZ3、Armstrong公理的正确性公理的正确性 定理定理: Armstrong推理规则是正确的。推理规则是正确的。证明很简单,自己看书证明很简单,自己看书P1844、Armstrong公理的推论公理的推论 (1)合并规则:合并规则:由由XY, XZ,有,有XYZ。 (2)分解规则:分解规则:由由XY及及Z Y,有,有XZ。 (3)伪传递

239、规则:伪传递规则:由由XY, WYZ,有,有XWZ。决定每一部分必决定全部决定每一部分必决定全部决定全部必决定部分决定全部必决定部分2024/9/1251数据库系统数据库系统第五章 关系数据理论证明证明(1)合并规则:)合并规则:由由XY, XZ,有,有XYZ。 Armstrong公理公理若若Y X,则,则 XY若若XY,则,则 XZYZ若若XY、Y Z,则,则XZ因为因为 XZ,由增广律有,由增广律有 XYYZ,因为因为 XY,由增广律有,由增广律有 XXXY,由传递律有由传递律有 XXYZ又因为又因为 XXX (自反律),所以(自反律),所以 XYZ(传递律)。(传递律)。(2)分解规则:

240、分解规则:由由XY及及Z Y,有,有XZ。 因为因为Z Y,所以,所以YZ(自反律),(自反律), 由由XY、 YZ,又有,又有XZ(传递律)。(传递律)。伪传递规则的证明作为习题自己证。伪传递规则的证明作为习题自己证。 根据合并规则和分解规则,可以得出一个重要的结论:根据合并规则和分解规则,可以得出一个重要的结论:定理定理:XA1 A2 Ak的充要条件是的充要条件是XAi(i=1,2,k)。)。2024/9/1252数据库系统数据库系统第五章 关系数据理论二、函数依赖集的闭包二、函数依赖集的闭包1、闭包的定义、闭包的定义:在关系模式:在关系模式R中中F所逻辑蕴涵的函数所逻辑蕴涵的函数 依赖的

241、全体称为依赖的全体称为F的闭包。记作的闭包。记作F+。 有了上述推理规则,对一个给定的函数依赖集有了上述推理规则,对一个给定的函数依赖集F,我们自,我们自然希望知道哪些函数依赖可由然希望知道哪些函数依赖可由F推出,哪些不能由推出,哪些不能由F推出,推出,由由F能推出的函数依赖有多少等。能推出的函数依赖有多少等。例:设关系模式例:设关系模式R,其中其中U=X,Y,Z,F=XY, YZ,则,则F的闭包的闭包F+为:为:X XY XZ XYZ Y YZ Z XX XYX XZX XYZX YY YZY ZZXY XYY ZXY XYZY YZ YZZXZ XYZ XZZ XYZZ YYZ YZYZX

242、XY XYXY XZXY XYZXYXXZ XYXZ XZXZ XYZXZXYZ XYYZ XZYZ XYZYZXXYZ XYXYZ XZXYZ XYZXYZ2024/9/1253数据库系统数据库系统第五章 关系数据理论2、求函数依赖集的闭包问题是、求函数依赖集的闭包问题是NP完全问题完全问题3、属性集的闭包、属性集的闭包 设关系模式设关系模式 R,X U,X关于函数依赖集关于函数依赖集F的闭包为:的闭包为:X+F= A | XA能由能由F根据根据Armstrong公理推出公理推出函数依赖集的闭包是一个(更大的)函数依赖集函数依赖集的闭包是一个(更大的)函数依赖集属性集的闭包属性集的闭包 是一

243、个(更大的)属性集合是一个(更大的)属性集合 设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X,Y U, XY能能由由F根据根据Armstrong公理导出的充分必要条件是公理导出的充分必要条件是Y 。X+F 于是判定于是判定XY能否由能否由F根据根据Armstrong公理导出的问题,公理导出的问题,就转化为求出就转化为求出 ,判定,判定Y是否为是否为 的子集的问题。的子集的问题。X+FX+F2024/9/1254数据库系统数据库系统第五章 关系数据理论4、求闭包、求闭包 X+F的算法的算法 Armstrong公理公理若若Y X,则,则 XY若若XY,则,则 XZYZ若若XY、Y

244、Z,则,则XZ 分析分析:根据定义,要求所有这样:根据定义,要求所有这样的属性的属性A:XA能由能由F经数次使用经数次使用Armstrong公理推出。公理推出。A应具备何种特征?应具备何种特征? 分析分析Armstrong公理的形式可以看出,公理的形式可以看出,A应该属于应该属于X,或,或A属于属于F中某个函数依赖的右部,而该函数依赖的左部属性应中某个函数依赖的右部,而该函数依赖的左部属性应是属于是属于X的闭包。的闭包。 算法思想算法思想:采用逐步扩张:采用逐步扩张X的策略求的策略求X的闭包。方法是:的闭包。方法是:扫描扫描F,找出左部属性属于当前,找出左部属性属于当前X的闭包的函数依赖,将右

245、部的闭包的函数依赖,将右部属性加入当前属性加入当前X的闭包。经若干次扩张,直到当前闭包集不再的闭包。经若干次扩张,直到当前闭包集不再扩大为止。扩大为止。2024/9/1255数据库系统数据库系统第五章 关系数据理论算法算法输入:输入:X,U,F;输出:输出:X关于关于F的闭包的闭包X+F(1)初始初始:令:令X(0)=X, i=0;(2)迭代迭代:求:求B=A | ( V)( W) (VW F V X(i) A W); X(i+1)=B X(i);(3)判断判断: X(i+1)=X(i)? 若相等或若相等或X(i)=U,转下一步;,转下一步; 否则,用否则,用i+1取代取代i,转第(,转第(2

246、)步继续迭代;)步继续迭代;(4)结束结束:X(i)就是就是 ,算法终止,算法终止.X+F计算时在计算时在F中寻找未用过的中寻找未用过的左部是左部是X(i)的子集的函数依赖的子集的函数依赖每次迭代都添加属性到当前闭包每次迭代都添加属性到当前闭包(不增加时算法就不增加时算法就结束结束)故至多迭代故至多迭代|U|X|次算法终止次算法终止2024/9/1256数据库系统数据库系统第五章 关系数据理论例:设例:设F= ACPE,PGA,BCE,AP,GAB, GCA,PABG,AEGB,DPH , X=BG, 求求X+F左部左部 右部右部 迭代号迭代号ACPGBAGAGCPABAEDPPEACEPBA

247、GGBH求解过程求解过程初始:初始:X(0) = X = BG第第1次迭代次迭代: 找左部为找左部为B、G或或BG的的 函数依赖,将其右部属性放入闭包函数依赖,将其右部属性放入闭包1B CE GC A A 2AC A GA AE PE P B GB 3333PG PAB G 44X(4)与与X(3)相同,算法结束,相同,算法结束,X(4)=ABCEGP就是就是BG的闭包的闭包 X(1) = X(0) CE = BCEG第第2次迭代次迭代: X(2) = X(1) A = ABCEG第第3次迭代次迭代: X(3) = X(2) PEBG = ABCEGP第第4次迭代次迭代:X(4) = X(3)

248、 AG = ABCEGP2024/9/1257数据库系统数据库系统第五章 关系数据理论又如,若关系模式为又如,若关系模式为 R(A1,A2,A3),F=A1A2, A2A3, 则当则当 X=A1 时,时,X的闭包为的闭包为 A1A2A3; 当当 X=A2 时,时,X的闭包为的闭包为 A2A3; 当当 X=A3 时,时,X的闭包为的闭包为 A3;求求X的闭包算法的正确性的闭包算法的正确性我们不做证明。我们不做证明。思考思考:对关系模式:对关系模式R, 若若 = U, 问问X有何性质?有何性质?X+F留作习题留作习题2024/9/1258数据库系统数据库系统第五章 关系数据理论三、三、Armstr

249、ong公理系统的有效性和完备性公理系统的有效性和完备性 函数依赖集函数依赖集F的闭包的闭包F+是是F所逻辑蕴涵的函数依赖的全体。所逻辑蕴涵的函数依赖的全体。关于逻辑蕴涵,我们已经建立了一套推理规则(关于逻辑蕴涵,我们已经建立了一套推理规则( Armstrong公公理系统),因此自然要问:理系统),因此自然要问: 由由F出发根据出发根据Armstrong公理能推出的函数依赖是否一定公理能推出的函数依赖是否一定是是F逻辑蕴涵的,即是否一定在逻辑蕴涵的,即是否一定在F+中?中? F+中的每一个函数依赖,即中的每一个函数依赖,即F逻辑蕴涵的每一个函数依赖,逻辑蕴涵的每一个函数依赖,是否一定可以根据是否

250、一定可以根据Armstrong公理推出?公理推出?F+ = 由由F出发根据出发根据Armstrong公理能推出的函数依赖的全体公理能推出的函数依赖的全体 ?2024/9/1259数据库系统数据库系统第五章 关系数据理论 Armstrong公理的有效性:公理的有效性: 有效性就是正确性,有效性就是正确性, Armstrong公理的正确性就是由该公公理的正确性就是由该公理系统推出的函数依赖都是正确的。而正确性的标准就是只要理系统推出的函数依赖都是正确的。而正确性的标准就是只要F中的函数依赖为真,则由公理推出的函数依赖也为真。换句话中的函数依赖为真,则由公理推出的函数依赖也为真。换句话说,由说,由F

251、出发根据出发根据Armstrong公理能推出的函数依赖一定在公理能推出的函数依赖一定在F+中中 Armstrong公理的完备性:公理的完备性: 完备性就是要讨论用公理能否推出所有的函数依赖。因为完备性就是要讨论用公理能否推出所有的函数依赖。因为如果存在如果存在F逻辑蕴涵的函数依赖不能用公理推出,则说明这些逻辑蕴涵的函数依赖不能用公理推出,则说明这些公理不够用,是不完全的,还必须补充新的公理。因此,完备公理不够用,是不完全的,还必须补充新的公理。因此,完备性就是指性就是指F+中的每一个函数依赖,一定可以根据中的每一个函数依赖,一定可以根据Armstrong公公理推出理推出1、何谓有效性?何谓完备

252、性?、何谓有效性?何谓完备性?2024/9/1260数据库系统数据库系统第五章 关系数据理论2、 Armstrong公理的有效性公理的有效性 回忆一下回忆一下Armstrong公理系统(自反律、传递律和增广律)公理系统(自反律、传递律和增广律)以及前面讨论过的定理以及前面讨论过的定理“ Armstrong推理规则是正确的推理规则是正确的”,可,可证证Armstrong公理系统是有效的。公理系统是有效的。公理的正确性保证了推出的所有函数依赖都是正确的;公理的正确性保证了推出的所有函数依赖都是正确的;公理的完备性保证了可以推出所有的函数依赖。公理的完备性保证了可以推出所有的函数依赖。3、 Arms

253、trong公理的完备性公理的完备性要证完备性,必须解决如何判断要证完备性,必须解决如何判断 一个函数依赖是否可由一个函数依赖是否可由F出发根据出发根据Armstrong公理推出公理推出 如果能方便地求出如果能方便地求出F+,将有助于解决上述问题,但计算,将有助于解决上述问题,但计算F+是是NP完全问题。完全问题。 前面已经给出求属性集的闭包的有效算法。对一个函数依赖前面已经给出求属性集的闭包的有效算法。对一个函数依赖XY,X的闭包对我们要解决的问题有何帮助?的闭包对我们要解决的问题有何帮助?2024/9/1261数据库系统数据库系统第五章 关系数据理论引理引理:对关系模式:对关系模式R,X、Y

254、 U, X Y能由能由F根据根据Armstrong公理推出公理推出Y X+F根据求闭包的算法,可知根据求闭包的算法,可知 X X+F因此,若因此,若 ,则,则 X Y。Y X+F反之是否成立?反之是否成立?证明证明充分性:充分性: 根据属性闭包的定义可得根据属性闭包的定义可得 XBi(i=1,2,k)都可由)都可由F根据根据Armstrong公理公理推出,推出, 再由合并规则可得再由合并规则可得 XB1B2Bk, 即即 XY可由可由F根据根据Armstrong公理推出,公理推出,设设Y=B1B2Bk,Bi X+F,(,(i=1,2,k)必要性:必要性:此处证明从略,留作习题此处证明从略,留作习

255、题2024/9/1262数据库系统数据库系统第五章 关系数据理论定理定理: Armstrong公理系统是完备的。公理系统是完备的。根据定义,需证:根据定义,需证:对对F+中的每一个函数依赖,必中的每一个函数依赖,必定可由定可由F用用Armstrong公理推出公理推出再由再由F+的定义,需证:的定义,需证:对对F所蕴涵的每个函数依赖,必所蕴涵的每个函数依赖,必定可由定可由F用用Armstrong公理推出公理推出因此,只需证明:因此,只需证明: 若存在函数依赖若存在函数依赖 XY不能不能由由Armstrong公理推出,则它公理推出,则它不为不为F所蕴涵所蕴涵分析分析欲证欲证 XY不为不为F所蕴涵,

256、所蕴涵,只需证:只需证: 存在符合关系模式存在符合关系模式 R的一个关系的一个关系r,函数依赖,函数依赖XY在在r上不成立上不成立因此,需要构造一个关系因此,需要构造一个关系r: r的属性集是的属性集是U,且,且r满足满足F中的所有函数依赖,但中的所有函数依赖,但XY在在r上不成立上不成立关键是证明这两点关键是证明这两点2024/9/1263数据库系统数据库系统第五章 关系数据理论欲构造关系欲构造关系r,使得,使得XY在在r上不成立,最简单的情形是:上不成立,最简单的情形是:r X Y Z 1110表示相等表示相等表示不相等表示不相等但这样构造的但这样构造的r显然不合要求,因为显然不合要求,因

257、为r不一定满足不一定满足F中的所有中的所有函数依赖。函数依赖。 属性集的闭包在属性集的闭包在Armstrong公理可推导的意义下具有封闭公理可推导的意义下具有封闭性,我们这里要讨论的就是性,我们这里要讨论的就是Armstrong公理的完备性。所以公理的完备性。所以 构造构造r时利用时利用X的闭包更为合理的闭包更为合理: X+FX+FU关系关系r111111111000关系关系r只有两个元组,只有两个元组,在在X的闭包上分量值相等的闭包上分量值相等2024/9/1264数据库系统数据库系统第五章 关系数据理论证明证明(1)先证)先证F中的函数依赖和中的函数依赖和X的闭包有下述关系:的闭包有下述关

258、系:若若VW是是F中的函数依赖,且中的函数依赖,且 V X+F,则,则W X+F根据前面引理易证根据前面引理易证(2)再证前面构造的关系)再证前面构造的关系 r 是是 R的关系,即满足的关系,即满足F中的全部函数依赖中的全部函数依赖 设设VW 是是F中的任一函数依赖,中的任一函数依赖,要证要证VW在在r上成立。上成立。分两种情情形:分两种情情形:第一种情形第一种情形:V X+F根据第(根据第(1)步结论,有)步结论,有W X+FW 111111X+FX+FU关系关系r111000 W的值在仅有的两个元组上相等,因此必有若的值在仅有的两个元组上相等,因此必有若tV=sV则则tW=sW,所以此时所

259、以此时VW在在r上成立。上成立。假设函数依赖假设函数依赖 XY不能由不能由Armstrong公理推出公理推出2024/9/1265数据库系统数据库系统第五章 关系数据理论第二种情形第二种情形:V X+F此时存在属性此时存在属性A V,但,但A X+F X+FX+FU关系关系r1110VA r中仅有的两个元组在属性中仅有的两个元组在属性A上的值不等,上的值不等,所以在所以在r中不存在两个元组中不存在两个元组t、s满足满足tV=sV,因此因此“若若tV=sV,则,则tW=sW”在关系在关系r上恒成立,故上恒成立,故VW在在r上成立。上成立。综上可知综上可知F的任一函数依赖的任一函数依赖在在r上成立

260、,即上成立,即r是是 R的关系的关系(3)最后证明)最后证明函数依赖函数依赖XY在在r上不成立上不成立由假设,由假设, XY不能由不能由Armstrong公理推出,根据引理有公理推出,根据引理有Y X+F所以有所以有Y的子集的子集Y满足满足Y X+FU,故对,故对r中仅有的两元组中仅有的两元组t、s,有,有tY sY,进而有,进而有tY sY。,所以有,所以有tX=sX,因此得因此得XY在在r上不成立。即上不成立。即XY必不为必不为F所蕴涵。所蕴涵。X+F但由于但由于X 证毕证毕2024/9/1266数据库系统数据库系统第五章 关系数据理论四、函数依赖集的等价和极小依赖集四、函数依赖集的等价和

261、极小依赖集1、函数依赖集的等价(覆盖):、函数依赖集的等价(覆盖): 定义定义:设:设F和和G都是关系模式都是关系模式R上的两个函数依赖集,如果上的两个函数依赖集,如果F+ = G+,则称,则称F与与G等价(或称等价(或称F覆盖覆盖G,或,或G覆盖覆盖F)。)。等价具有自反性、对称性、传递性,即是一等价关系。等价具有自反性、对称性、传递性,即是一等价关系。定理:定理:F+ = G+ 的充要条件是的充要条件是 F G+和和 G F+ 。证明证明:必要性显然必要性显然。因为。因为F F+、G G+成立,成立, 若若 F+ = G+,则必有,则必有F G+、G F+成立。成立。充分性充分性:要证当:

262、要证当F G+、G F+时,有时,有F+ = G+成立。成立。先证对任意的先证对任意的XY F+,有,有XY G+。这样就有。这样就有F+ G+。即即F可由可由G推出推出G也可由也可由F推出推出因为因为XY F+,所以,所以Y X+F。2024/9/1267数据库系统数据库系统第五章 关系数据理论若若F G+,则,则 X+FX+G+X+G+所以所以Y ,从而得,从而得XY (G+)+=G+。同理可证同理可证 G+ F+,所以,所以 F+ = G+。证毕证毕对本定理也可先证命题:(对本定理也可先证命题:(1)若)若F G,则,则F+ G+; (2)F+ =(F+)+。然后有:然后有:F G+ F

263、+ (G+)+ = G+; G F+ G+ (F+)+ = F+;F+ = G+于是证得于是证得F+ G+。2、极小(最小)函数依赖集、极小(最小)函数依赖集 根据分解与合并规则,可以证明下述引理:根据分解与合并规则,可以证明下述引理:引理引理:每个函数依赖集:每个函数依赖集F都与一个右部只有单个属性的函数都与一个右部只有单个属性的函数 依赖所构成的函数依赖集依赖所构成的函数依赖集G等价。等价。2024/9/1268数据库系统数据库系统第五章 关系数据理论证明证明;设;设F中的函数依赖由两部分构成:中的函数依赖由两部分构成:F = F1 F2右边是单属性的函数依赖子集右边是单属性的函数依赖子集

264、右边是一个以上属性的函数依赖子集右边是一个以上属性的函数依赖子集设设F2中的函数依赖形如中的函数依赖形如 XA1A2Ak,k 2。令令F3是将是将F2中所有函数依赖分解成形如中所有函数依赖分解成形如 XAi 的函数依赖全体,的函数依赖全体, G = F1 F3,要证明,要证明F与与G等价等价 对对G中任一个形如中任一个形如 XAi F3,由于,由于F中存在中存在XA1A2Ak,i k,根据分解规则可推出,根据分解规则可推出 XAi,所以,所以 XAi F+,而,而F1 F F+。 故故G F+。 根据合并规则,同理可证根据合并规则,同理可证 F G+。 根据前面的引理,有根据前面的引理,有F与

265、与G等价。等价。证毕证毕2024/9/1269数据库系统数据库系统第五章 关系数据理论定义定义:若函数依赖集:若函数依赖集F满足下列条件,则称满足下列条件,则称F为极小(函数)为极小(函数) 依赖集,亦称最小(函数)依赖集、最小覆盖:依赖集,亦称最小(函数)依赖集、最小覆盖:(1)F的每个函数依赖的右部仅含有一个属性;的每个函数依赖的右部仅含有一个属性;(2)对)对F中的任一个函数依赖中的任一个函数依赖XA, 都有都有F与与F XA不等价;不等价;(3)对对F中的任一个函数依赖中的任一个函数依赖XA, 都有都有F与(与(F XA) ZA不等价,不等价, 其中其中Z是是X的任一真子集。的任一真子

266、集。不存在多余的函数依赖不存在多余的函数依赖右部都是单属性右部都是单属性每个函数依赖的左部每个函数依赖的左部没有多余的属性没有多余的属性例例:关系模式:关系模式 S,U = S#,SD,MN,CN,G , F = S#SD,SDMN,(,(S#,CN)G , 则则F是最小覆盖。是最小覆盖。 设函数依赖集设函数依赖集F = S#SD,S#MN, SDMN, (S#,CN)G ,(,(S#,SD)SD , 则则F不是最小覆盖。不是最小覆盖。2024/9/1270数据库系统数据库系统第五章 关系数据理论3、如何求极小函数依赖集、如何求极小函数依赖集定理:每一个函数依赖集定理:每一个函数依赖集F均等价

267、于一个极小函数依赖集均等价于一个极小函数依赖集Fm。证明证明(1)分解)分解:将:将F中右部多于一个属性的函数依赖分解成单属性中右部多于一个属性的函数依赖分解成单属性函数依赖。函数依赖。 逐一检查逐一检查F中各函数依赖中各函数依赖FDi:XY,若,若Y=A1A2Ak,k 2,则用,则用XAi | i=1,2, k 取代取代XY。 这样每个函数依赖的右部都为单属性,由引理知该函数依这样每个函数依赖的右部都为单属性,由引理知该函数依赖集与赖集与F等价。等价。(2)去多余依赖)去多余依赖: 对经第一步处理后的对经第一步处理后的F,逐一检查,逐一检查F中各函数依赖中各函数依赖 XA,令令G=FXA,若

268、,若A ,则从,则从F中去掉中去掉XA。X+G对对F极小化处理极小化处理2024/9/1271数据库系统数据库系统第五章 关系数据理论此处我们考虑此处我们考虑XA 是否多余,即是否多余,即F是否与是否与G等价。等价。因为因为G是是F的子集,且只比的子集,且只比F少一个函数依赖少一个函数依赖XA,所以,所以F与与G等价等价XA可由可由G推出推出X+GA (3)去左部多余属性)去左部多余属性: 对经第二步处理后的对经第二步处理后的F,逐一检查,逐一检查F中各函数依赖中各函数依赖 XA,设设X=B1B2Bm,逐一考察,逐一考察Bi,若,若 A (XBi) ,则以,则以XBi+F取代取代X。这样得到的

269、函数依赖集仍与这样得到的函数依赖集仍与F等价,且去掉了左部多余等价,且去掉了左部多余的属性。的属性。F 与(与( FXA) ( XBi)A 等价等价(XBi)A 可由可由F推出推出A (XBi)+F证毕证毕2024/9/1272数据库系统数据库系统第五章 关系数据理论 此定理表明:任一函数依赖集都可极小化。定理的此定理表明:任一函数依赖集都可极小化。定理的证明过程就是证明过程就是“极小化处理极小化处理”过程,也就是求一个函数依过程,也就是求一个函数依赖集的极小依赖集的方法。赖集的极小依赖集的方法。 F的极小依赖集不一定唯一(例子见的极小依赖集不一定唯一(例子见P187)。当以)。当以不同的顺序

270、考察各函数依赖时,得到的极小函数依赖集可不同的顺序考察各函数依赖时,得到的极小函数依赖集可能不同。能不同。2024/9/1273数据库系统数据库系统第五章 关系数据理论例例:求下列函数依赖集:求下列函数依赖集F的极小依赖集。的极小依赖集。ABC, DEG, CA, BEC,BCD,CGBD, ACDB, CEAGF =解解:(:(1)分解右部为单属性分解右部为单属性ABC, DE, CA, BEC, DG,BCD,CGB,ACDB,CEA, CGD, CEGG = DEG,CGBD,CEAG(2)去掉去掉G中多余的函数依赖中多余的函数依赖 具体做法是:从具体做法是:从G的第一个依赖开始,依次判

271、别是否多余。的第一个依赖开始,依次判别是否多余。设处理到函数依赖设处理到函数依赖 XY,从函数依赖集中先去掉它,求,从函数依赖集中先去掉它,求X关关于此函数依赖集的闭包,再判属性于此函数依赖集的闭包,再判属性Y是否属于该闭包。若是,是否属于该闭包。若是,则去掉则去掉XY;否则,保留。然后处理下一个。;否则,保留。然后处理下一个。2024/9/1274数据库系统数据库系统第五章 关系数据理论ABC,DE,DG,CA,BEC, BCD,CGB,CGD,ACDB,CEA, CEGG =对此例:先判对此例:先判 ABC 是否多余?是否多余? 求求AB关于关于GABC的闭包,根据求闭包的算法,仍为的闭包

272、,根据求闭包的算法,仍为A,B,而,而 C A,B,所以不能去掉,所以不能去掉ABC; 同样可判同样可判DE, DG, CA, BEC, BCD也不能去掉;也不能去掉; 求求CG关于关于GCGB的闭包,得的闭包,得ABCDEG,B在其中,在其中, 故去掉故去掉CGB;ABC,DE,DG,CA,BEC,BCD, CGD,ACDB, CEGH = 对对GCGB继续进行,可得继续进行,可得CGD,ACDB保留,保留,CEA去掉去掉, CEG保留。保留。最后得:最后得:问:问:CGB如何由如何由H推出?推出? CG CCG ACG ACCG ACD B2024/9/1275数据库系统数据库系统第五章

273、关系数据理论(3)从从H中去掉左部多余的属性中去掉左部多余的属性 具体做法是:依次检查左部为多属性的函数依赖,对每一个具体做法是:依次检查左部为多属性的函数依赖,对每一个这样的函数依赖,检查其中是否有多余属性:若这样的函数依赖,检查其中是否有多余属性:若XBA,求,求X关于关于H的闭包,看它是否包含的闭包,看它是否包含A。ABC,DE,DG,CA, BEC,BCD,CGD,ACDB,CEGH =BEC,ABC,BCD,CGD,ACDB,CEG 看看ABC,因为,因为A关于关于H的闭包为的闭包为A,B关于关于H的闭包为的闭包为B,它们都不包含,它们都不包含C,故,故ABC无多余属性;无多余属性;

274、 同样可得同样可得BEC,BCD,CGD,CEG中无多余属性;中无多余属性; 看看ACDB,因为,因为 AC关于关于H的闭包为的闭包为A,C, AD关于关于H的闭包为的闭包为A,D,E,G, CD关于关于H的闭包为的闭包为A,B,C,D,E,G,不含不含B不含不含B包含包含BA多余多余2024/9/1276数据库系统数据库系统第五章 关系数据理论因此在因此在H中把中把 ACDB 换成换成 CDB:ABC, DE, DG, CA, BEC,BCD,CGD,ACDB,CEGH =F的极小依赖集为:的极小依赖集为:ABC, DE, DG, CA, BEC,BCD,CGD,CDB,CEGFm =F还有

275、另一个极小依赖集为:还有另一个极小依赖集为:ABC, DE, DG, CA,BEC,BCD,CGB,CEGFm2 = 本节开头本节开头下一节下一节本章开头本章开头2024/9/1277数据库系统数据库系统第五章 关系数据理论5 关系模式的分解关系模式的分解一、模式分解的有关概念一、模式分解的有关概念 1、分解的定义、分解的定义:对关系模式:对关系模式 R,若模式集合,若模式集合 = R1, R2, Rn 满足满足 U = U1 U2 Un,且,且 Ui Uj,1 i j n, Fi是是F在在Ui上的投影。上的投影。函数依赖集合函数依赖集合 XY XY F+ XY Ui 的一个覆盖的一个覆盖例例

276、:设模式为:设模式为R,其中,其中U=S#,SD,MN, F=S#SD,SDMN,考虑下面几种分解:考虑下面几种分解:(1)U1 = S# , U2 = SD ,U3 = MN F1 = , F2 = , F3 = = R1, R2,R3 是是R的一的一 个分解。个分解。2024/9/1278数据库系统数据库系统第五章 关系数据理论参考前面的例子:设关系模式为参考前面的例子:设关系模式为R,其中,其中U=X,Y,Z, F=XY,YZ, F的闭包的闭包F+为:为:X XY XZ XYZ Y YZ Z XX XYX XZX XYZX YY YZY ZZXY XYY XZY XYZY YZ YZZX

277、Z XYZ XZZ XYZZ YYZ YZYZXXY XYXY XZXY XYZXYXXZ XYXZ XZXZ XYZXZXYZ XYYZ XZYZ XYZYZXXYZ XYXYZ XZXYZ XYZXYZ(2)U1 = S#,SD , U2 = S#,MN XYF1 = S#SD ,2024/9/1279数据库系统数据库系统第五章 关系数据理论参考前面的例子:设关系模式为参考前面的例子:设关系模式为R,其中,其中U=X,Y,Z, F=XY,YZ, F的闭包的闭包F+为:为:X XY XZ XYZ Y YZ Z XX XYX XZX XYZX YY YZY ZZXY XYY XZY XYZY

278、YZ YZZXZ XYZ XZZ XYZZ YYZ YZYZXXY XYXY XZXY XYZXYXXZ XYXZ XZXZ XYZXZXYZ XYYZ XZYZ XYZYZXXYZ XYXYZ XZXYZ XYZXYZ F2 = S#MN XZ(2)U1 = S#,SD , U2 = S#,MN F1 = S#SD , = R1, R2 也是也是R的一个分解。的一个分解。2024/9/1280数据库系统数据库系统第五章 关系数据理论(3)U1 = S#,SD , U2 = SD,MN F1 = S#SD , F2 = SDMN = R1, R2 也是也是R的一个分解。的一个分解。2、分解可能

279、会带来的问题、分解可能会带来的问题(1)分析第一种情形:)分析第一种情形: U1 = S# ,U2 = SD ,U3 = MN F1 = , F2 = , F3 = 设关系设关系r为:为: S# SD MNS1 D1 张五张五S2 D1 张五张五S3 D2 李四李四S4 D3 王一王一r1为:为: S#r2为:为: SDr3为:为: MNS1S2S3S4D1D2D3张五张五李四李四王一王一问题:关系问题:关系r分解为分解为r1、r2、r3三个关三个关系,但根据这三个系,但根据这三个关系,无法回答诸关系,无法回答诸如如“S1是哪个系的是哪个系的学生?学生?”、“D1系系的系主任是谁?的系主任是谁

280、?”等许多提问。等许多提问。2024/9/1281数据库系统数据库系统第五章 关系数据理论 分解后的关系应该能够恢复成原来的形式,这是最分解后的关系应该能够恢复成原来的形式,这是最基本的要求。恢复通常由自然连接来实现。基本的要求。恢复通常由自然连接来实现。 r1、r2、r3自然连接的结果与自然连接的结果与r相比元组增加了,但相比元组增加了,但信息丢失了。信息丢失了。分解不能丢失信息,这就是分解不能丢失信息,这就是“无损连接性无损连接性”的概念的概念(2)分析第二种情形:)分析第二种情形: U1 = S#,SD , U2 = S#,MN F1 = S#SD , F2 = S#MN 对此分解,可正

281、确恢复出原来的关系。但原关系模式对此分解,可正确恢复出原来的关系。但原关系模式的数据冗余、插入异常、删除异常的问题仍然存在。的数据冗余、插入异常、删除异常的问题仍然存在。分析原因,原来具有的函数依赖分析原因,原来具有的函数依赖SDMN现在没有了。现在没有了。分解应该分解应该“保持函数依赖保持函数依赖”2024/9/1282数据库系统数据库系统第五章 关系数据理论(3)分析第三种情形:)分析第三种情形: U1 = S#,SD , U2 = SD,MN F1 = S#SD , F2 = SDMN 对此分解,通过自然连接可正确恢复,且原来的函数依赖都保持。对此分解,通过自然连接可正确恢复,且原来的函

282、数依赖都保持。3、分解准则、分解准则 分解后的模式应和原来的模式分解后的模式应和原来的模式“等价等价”。 根据以上分析,可提出以下不同标准:根据以上分析,可提出以下不同标准: 分解具有分解具有“无损连接性无损连接性”(Lossless join) 分解要分解要“保持函数依赖保持函数依赖”(Preserve dependency) 分解既要分解既要“保持函数依赖保持函数依赖”,又要具有,又要具有“无损连接性无损连接性”本节讨论:本节讨论: 何谓何谓“无损连接性无损连接性”和和“保持函数依赖保持函数依赖”? 分离程度如何?分离程度如何? 如何分解?如何分解?2024/9/1283数据库系统数据库系

283、统第五章 关系数据理论二、分解的无损连接性和保持函数依赖性二、分解的无损连接性和保持函数依赖性1、无损连接性的形式化定义、无损连接性的形式化定义: 设设 = R1, R2, Rk 是是R的一个分解。若对的一个分解。若对R的任何一个关系的任何一个关系r都有都有r = (r) (r) (r) U1U2Uk成立,则称成立,则称 具有无损连接性,简称具有无损连接性,简称 为无损分解。为无损分解。例例:设关系模式:设关系模式 R(A,B,C),), 分解为分解为R1(A,B)、)、R2(B,C)。)。 又设其中一个关系为:又设其中一个关系为:r A B Ca1 b1 c1a2 b1 c2a1 b1 c2

284、r1= (r)A,BA Ba1 b1a2 b1r2 = (r) B,CB Cb1 c1b1 c2r1 r2 A B Ca1 b1 c1a1 b1 c2a2 b1 c1a2 b1 c2a2 b1 c1 r多一个元组多一个元组不是无损分解不是无损分解2024/9/1284数据库系统数据库系统第五章 关系数据理论例例: 设模式为设模式为R,其中,其中U=S#,SD,MN, F=S#SD,SDMN, 分解为:分解为:U1 = S#,SD ,U2 = S#,MN F1 = S#SD , F2 = S#MN 设关系设关系r为:为: S# SD MNS1 D1 张五张五S2 D1 张五张五S3 D2 李四李

285、四S4 D3 王一王一r1= (r) S#,SD r2 = (r)S#,MNS# MNS1 张五张五S2 张五张五S3 李四李四S4 王一王一S# SDS1 D1S2 D1S3 D2S4 D3r1 r2 rS# SD MNS1 D1 张五张五S2 D1 张五张五S3 D2 李四李四S4 D3 王一王一此时是否可以说这是一个无损分解?此时是否可以说这是一个无损分解?不行!不行!如何判断是否为无损分解?如何判断是否为无损分解?2024/9/1285数据库系统数据库系统第五章 关系数据理论输入:输入: R的一个分解的一个分解 = R1(U1,F1), , Rk(Uk,Fk) , U=A1,A2,An

286、, F=FD1,FD2,FDp为最小覆盖,为最小覆盖,FDi:XiAli;输出:输出: 是否为无损连接的判定结果;是否为无损连接的判定结果; 构造一个构造一个k行行n列的表列的表:第:第i行对应关系模式行对应关系模式Ri,第,第j列对应属列对应属性性Aj;若;若Aj Ui,则在第,则在第i行第行第j列处写入列处写入aj;否则写入;否则写入bij。 逐个检查逐个检查F中的每一个函数依赖,并修改表中的元素中的每一个函数依赖,并修改表中的元素: 对每个对每个FDi :XiAli,在,在Xi对应的列中寻找符号相同的行,对应的列中寻找符号相同的行,并将这些行中并将这些行中Ali对应的列全改为相同的符号。

287、修改规则为:若对应的列全改为相同的符号。修改规则为:若其中有其中有ali,则全改为,则全改为ali;否则全改为;否则全改为bmli,m是这些行中行号是这些行中行号的最小值。(若某个的最小值。(若某个btli被改动,则该列中凡是被改动,则该列中凡是btli的符号都要的符号都要作同样的修改。)作同样的修改。)2、无损连接性判定算法、无损连接性判定算法2024/9/1286数据库系统数据库系统第五章 关系数据理论 判别判别:若某一行变成:若某一行变成a1,a2 ,an,则算法终止(,则算法终止(此时此时 为无损分解为无损分解);否则,比较本次扫描前后的表有无变化,若有,);否则,比较本次扫描前后的表

288、有无变化,若有,重复第重复第步;若无,算法终止(步;若无,算法终止(此时此时 不是无损分解不是无损分解)无损连接判定举例:无损连接判定举例:设模式为设模式为R,U= A, B, C, D, E ,F = ABC, CD, DE ,分解为分解为 R1(A, B, C)、R2(C, D)、R3(D, E)。算法第一步:构造初始表算法第一步:构造初始表a1 a2 a3 a3 a4 a4 a5A B C D ER1R2R3 b14 b15b21 b22 b25b31 b32 b33 对对ABC,看,看A、B对应的第对应的第1、2两列有两列有无相同的行。没有,不做处理。无相同的行。没有,不做处理。 对对

289、CD,看,看C对应的第对应的第3列有无相同的行列有无相同的行a3a3第第1、2行相同,将行相同,将D列的列的b14改为改为a4。a4a4a4a4a4a5a5a5对对DE,进行同样处理。,进行同样处理。算法第二步:扫描算法第二步:扫描F,修改表,修改表算法第三步:判断算法第三步:判断表中第一行为表中第一行为a1、a2、a3、a4、a5,算,算法终止,法终止,R1、R2、R3是是R的无损分解的无损分解2024/9/1287数据库系统数据库系统第五章 关系数据理论例例:设有关系模式:设有关系模式 R(A, B, C, D, E, F ), 其函数依赖集合其函数依赖集合F=AB,CF,EA,CED,

290、分解为分解为 = R1(C, F), R2(B, E), R3(E, C, D), R4(A, B) 解解: (1)构造表)构造表A B C D E FR1(C,F)R2(B,E)R3(E,C,D)R4(A, B)b11 b12 a3 b14 b15 a6b21 a2 b23 b24 a5 b26b31 b32 a3 a4 a5 b36 a1 a2 b43 b44 b45 b46 (2)修改表,第一次扫描)修改表,第一次扫描F AB:无修改:无修改 CF: b36改为改为a6 CED:无修改:无修改 EA: b31改为改为b21 a6 b21(3)第二次扫描)第二次扫描F a2 AB:b32改

291、为改为a2其余无修改其余无修改(4)第三次扫描)第三次扫描: 表无变化表无变化, 算法终止算法终止(5)判断:不是无损分解)判断:不是无损分解2024/9/1288数据库系统数据库系统第五章 关系数据理论 例例:设关系模式为:设关系模式为R, U= A, B, C , F = AB, CB , 分别检查下列分解的无损连接性:分别检查下列分解的无损连接性:(1) 1 = R1(A, B), R2(B, C) (2) 2 = R1(A, C), R2(B, C) a1 a2a2 a3b13b21A B CR1(A, B)R2(B, C)A B CR1(A, C)R2(B, C)a1a2 a3b12

292、b21a3对对AB,表无修改,表无修改对对CB,表无修改,表无修改对对AB,表无修改,表无修改对对CB,修改修改b12为为a2a23、算法的正确性、算法的正确性: 定理定理: 为无损连接分解的充分必要条件是:为无损连接分解的充分必要条件是: 算法终止时,表中有一行为算法终止时,表中有一行为a1,a2,an。证明略证明略4、分解为两个关系模式时的简单判定法、分解为两个关系模式时的简单判定法2024/9/1289数据库系统数据库系统第五章 关系数据理论定理定理:设:设 = R1, R2 是是R的一个分解。的一个分解。 那么那么 是无损分解的充分必要条件是是无损分解的充分必要条件是 U1 U2 U1

293、U2 F+ 或或 U1 U2 U2U1 F+ 证明略证明略看上例看上例:关系模式为:关系模式为R, U= A, B, C , F = AB, CB ,(1) 1 = R1(A, B), R2(B, C) (2) 2 = R1(A, C), R2(B, C) U1 U2 U1U2 为:为: B AU1 U2 U2U1 为:为: B CU1 U2 U1U2 为:为: C AU1 U2 U2U1 为:为: C B因为因为 B = B+F不包含不包含A,也不包含,也不包含C,所以所以BA和和BC不为不为F所蕴涵所蕴涵 1不是无损分解不是无损分解因为因为CB F,所以,所以 2是无损分解是无损分解(U1

294、U2) (U1 U2)F+(U2U1) (U1 U2)F+或或即即2024/9/1290数据库系统数据库系统第五章 关系数据理论5、保持函数依赖性的形式化定义、保持函数依赖性的形式化定义: 设设 = R1, R2, , Rk 是是R的一个分解,若的一个分解,若 F = (F1 F2Fk),),则称则称 保持函数依赖保持函数依赖。+判别定理:判别定理:F+ = G+ 的充要条件是的充要条件是 F G+和和 G F+ 。6、说明、说明 一个无损连接分解一个无损连接分解 不一定是不一定是 一个保持函数依赖的分解一个保持函数依赖的分解 一个保持函数依赖的分解一个保持函数依赖的分解 不一定是不一定是 一

295、个无损连接分解一个无损连接分解例例:关系模式为:关系模式为R, U= A, B, C , F = AB, CB ,(1) 1 = R1(A, B), R2(B, C) (2) 2 = R1(A, C), R2(B, C) 有损连接有损连接无损连接无损连接其其 F1=AB,F2=CB 保持函数依赖保持函数依赖其其 F1= ,F2=CB 不保持函数依赖不保持函数依赖2024/9/1291数据库系统数据库系统第五章 关系数据理论三、模式分解的算法三、模式分解的算法1、模式分解的分离程度、模式分解的分离程度3NF具有无损连接性具有无损连接性保持函数依赖保持函数依赖具有无损连接性具有无损连接性4NF保持

296、函数依赖保持函数依赖3NF2、转换为、转换为3NF的保持函数依赖的分解算法的保持函数依赖的分解算法合成法合成法 若要将一个关系模式的极小函数依赖集中的每若要将一个关系模式的极小函数依赖集中的每一个函数依赖都要保留下来,最简单的方法就是把每一个函一个函数依赖都要保留下来,最简单的方法就是把每一个函数依赖的左右部属性组成一个模式。数依赖的左右部属性组成一个模式。 如假设如假设 F = AB,AC,CD,则可考虑分解为:,则可考虑分解为: = R1(A, B), R2(A, C), R3(C, D) 但但AB,AC左部相同,分解成两个模式是否有必要呢?左部相同,分解成两个模式是否有必要呢?算法思想:

297、算法思想:考虑合并考虑合并(左部相同的函数依赖放在一起考虑)(左部相同的函数依赖放在一起考虑)直直观观的的想想法法最最重重要要2024/9/1292数据库系统数据库系统第五章 关系数据理论算法算法5.3:把一个关系模式分解为:把一个关系模式分解为3NF,且使它保持函数依赖,且使它保持函数依赖 输入:关系模式输入:关系模式 R; 输出:输出:R的一个分解的一个分解 =R1,R2,Rk,每个,每个Ri均为均为3NF,且,且 保持函数依赖保持函数依赖(1)极小化:)极小化:对对F进行极小化处理(处理后的函数依赖集仍记进行极小化处理(处理后的函数依赖集仍记为为F););(2)分离无关属性:)分离无关属

298、性:把把U中不出现在中不出现在F中的属性组成一个关系中的属性组成一个关系模式,从模式,从U中去掉这些属性(剩余的属性仍记为中去掉这些属性(剩余的属性仍记为U););(3)判是否需分解:)判是否需分解:若有若有XA F,且,且XA=U,则,则 =R,算,算法终止;法终止;(4)分解:)分解:对对F分组:左部相同的为一组分组:左部相同的为一组, 设为设为Fi,每组所包,每组所包含的全部属性形成一个属性集含的全部属性形成一个属性集Ui。若有。若有Ui Uj(i j),去掉),去掉Ui。设最后保留下来。设最后保留下来U1,U2,Uk,则,则 = R1(U1), R2(U2), Rk(Uk) ,算法终止

299、。,算法终止。2024/9/1293数据库系统数据库系统第五章 关系数据理论例例1:设关系模式:设关系模式 R(A,B,C,G,H,R,S,T),), F = CT,CSG,HTR,HRC,HSR 求:求:(a)R的一个侯选关键字;的一个侯选关键字; (b)将将R分解为分解为3NF,并且保持函数依赖性。,并且保持函数依赖性。 (b)分解分解R:(1) 先对先对F极小化:极小化:F已是最小依赖集。已是最小依赖集。 (2) 分离无关属性:分离无关属性:AB未在未在F中出现,分离出去。中出现,分离出去。 (3) 判是否需分解:需要。判是否需分解:需要。 (4) 分解:按左部相同的原则分组。分解:按左

300、部相同的原则分组。则则 = R1(A,B), R2(C,T),R3(C,S,G), R4(H,T,R), R5(H, R, C), R6(H,S,R) 为一个保持函数依赖且达到为一个保持函数依赖且达到3NF 的分解。的分解。解解 (a)求关键字:设求关键字:设X为候选关键字,则必有为候选关键字,则必有X =U。F+X只能取只能取F中函数依赖右部的属性,中函数依赖右部的属性, X+FX+F而而要等于要等于U,至少应有至少应有ABHS X。求求ABHS关于关于F的闭包有:的闭包有:(ABHS) = ABHSRCTG=UF+所以所以ABHS是一个候选关键字。是一个候选关键字。2024/9/1294数

301、据库系统数据库系统第五章 关系数据理论例例2:设有关系模式:设有关系模式 R(A,B,C,D,E),),R的一个函数依的一个函数依赖集为赖集为F = AD,AB,ED,DB,BCD,DCA , (a)求)求R的候选关键字;的候选关键字; (b)将)将R分解为分解为3NF,并且保持函数依赖性。,并且保持函数依赖性。解解(a)求关键字:)求关键字:设设X为候选关键字,则必有为候选关键字,则必有X =ABCDE。+FX+FX只能取只能取F中函数依赖右部的属性,要使中函数依赖右部的属性,要使而而X+F等于等于ABCDE,必须有,必须有CE X。再求再求CE关于关于F的闭包,得(的闭包,得(CE) =

302、CEDBA。+F所以所以CE是一个候选关键字。是一个候选关键字。若此时还不等于若此时还不等于R的属性集的属性集U,怎么办?怎么办?(b)分解)分解R: (1)先对)先对F极小化:极小化: 分解右部为单属性:不需要;分解右部为单属性:不需要; 去掉多余函数依赖:去掉多余函数依赖:A AB B多余多余;2024/9/1295数据库系统数据库系统第五章 关系数据理论例例2:设有关系模式:设有关系模式 R(A,B,C,D,E),),R的一个函数依的一个函数依赖集为赖集为F = AD,AB,ED,DB,BCD,DCA , (a)求)求R的候选关键字;的候选关键字; (b)将)将R分解为分解为3NF,并且

303、保持函数依赖性。,并且保持函数依赖性。 去掉左部多余属性:没有。去掉左部多余属性:没有。 所以极小函数依赖集为:所以极小函数依赖集为: F = AD,ED,DB,BCD,DCA (2)分离无关属性:没有。)分离无关属性:没有。(3)判是否需分解:需要。)判是否需分解:需要。(4)分解:)分解:AD,ED,DB,BCD,DCA =R1( E, D),R2(B, C, D),R3(D, C, A) 2024/9/1296数据库系统数据库系统第五章 关系数据理论例例3:设有关系模式:设有关系模式 R(A,B,C,D),R的一个函数依赖集为的一个函数依赖集为 F = AB,BC,CD,DA , 试将试

304、将R分解为分解为3NF,并且保持函数依赖性。,并且保持函数依赖性。解解(1)先对)先对F极小化:极小化:F就是最小依赖集。就是最小依赖集。(2)分离无关属性:没有。)分离无关属性:没有。(3)判是否需分解:需要。)判是否需分解:需要。(4)分解:)分解: =R1(A, B),R2(B, C),R3(C, D),R4(D, A)算法的正确性算法的正确性: 按算法按算法5.3得到的关系模式得到的关系模式R的分解的分解 =R1,R2,Rk满足:满足: 每个每个Ri均为均为3NF,且,且 保持函数依赖。保持函数依赖。2024/9/1297数据库系统数据库系统第五章 关系数据理论Fi系由系由F按左部相同

305、的原则分组而得。按左部相同的原则分组而得。证明证明:(a) 保持函数依赖显然成立。保持函数依赖显然成立。设设F是是R的最小依赖集,的最小依赖集,Fi是分解算法中得到是分解算法中得到Ri的那组函数依赖,的那组函数依赖,(b)证每个证每个 Ri 均为均为3NF(Fi是是F在在Ui上的投影):上的投影): 要证不存在非主属性对关键字的传递函数依赖。要证不存在非主属性对关键字的传递函数依赖。 设设 Fi = XA1, XA2, XAn ,Ui =X, A1, An ,则则X一定是一定是Ri的候选关键字。的候选关键字。 反证法反证法:假设:假设Ri不是不是3NF,则,则Ui中存在非主属性中存在非主属性A

306、m(1 m n)和属性组合和属性组合Y使得使得Am Y,XY、YAm Fi , 而而YX Fi 。+下面证下面证 XAm在在F中多余,从而与中多余,从而与F是最小依赖集矛盾。是最小依赖集矛盾。令令G=F XAm ,欲证,欲证 XAm G 。+非主属性非主属性Am传递依赖于侯选关键字传递依赖于侯选关键字X2024/9/1298数据库系统数据库系统第五章 关系数据理论因为因为Y是是Ui的子集,且不包含的子集,且不包含Am,所以,所以 Y X ,因此因此XY G 。+G+要证要证 XAm G ,只需再证,只需再证YAm G 。+因为因为YAm Fi ,所以,所以Am Y 。+F若若YAm G ,则在

307、求,则在求Y 的算法中,只有使用的算法中,只有使用XAm才能才能将将Am引入。引入。+F根据求闭包的算法,存在根据求闭包的算法,存在j使得使得X Y ,故得,故得YX F ,(j)+与与YX Fi 相矛盾,相矛盾,+所以所以YAm G 成立。成立。+证毕证毕说明说明:因为保持函数依赖的分解可能不是无损连接的分解,:因为保持函数依赖的分解可能不是无损连接的分解,而不具有无损连接性就会丢失信息,所以这样的分解是没有而不具有无损连接性就会丢失信息,所以这样的分解是没有意义的。因此单单算法意义的。因此单单算法5.3没有实用价值,但它是下一算法的没有实用价值,但它是下一算法的基础。基础。2024/9/1

308、299数据库系统数据库系统第五章 关系数据理论2、转换为、转换为3NF既保持函数依赖又具有无损连接性的分解算法既保持函数依赖又具有无损连接性的分解算法 在算法在算法5.3分解的基础上,增加一个模式,该模式以分解的基础上,增加一个模式,该模式以原模式的一个关键字作为属性组,使该模式起到正确连接其它原模式的一个关键字作为属性组,使该模式起到正确连接其它各模式的作用。各模式的作用。例如,例如,对对 R(A,B,C,D),其最小依赖集,其最小依赖集F=AB,CD,按算法按算法5.3得到的分解是得到的分解是 1 =AB,CD, 不具有无损连接性。不具有无损连接性。R的关键字是的关键字是AC,分解成,分解

309、成 2 =AB, CD, AC就具有无损连接性。就具有无损连接性。算法算法5.4:算法思想算法思想:(1)用算法)用算法5.3将将R分解为分解为 = R1(U1), R2(U2), Rk(Uk) ;(2)求)求R的一个关键字的一个关键字X;(3)若)若X是某个是某个Ui的子集,输出的子集,输出 = ; 否则,否则, 输出输出 = R (X) ;算法结束。;算法结束。输入:关系模式输入:关系模式R;输出:输出:R的一个分解的一个分解 =R1,R2,Rp,每个,每个Ri均为均为3NF, 且且 既保持函数依赖又具有无损连接性;既保持函数依赖又具有无损连接性;*2024/9/1300数据库系统数据库系

310、统第五章 关系数据理论算法的正确性算法的正确性:按算法:按算法5.4得到的关系模式得到的关系模式R的分解的分解 =R1, R2, Rp满足:满足: 每个每个Ri均为均为3NF,且,且 既保持函数依赖又具有无损连接性。既保持函数依赖又具有无损连接性。证明证明;(;(a) 保持函数依赖显然成立。保持函数依赖显然成立。(b)证每个证每个 Ri均为均为3NF:算法算法5.3保证保证R 之外的之外的Ri都为都为3NF;R 中没有非主属性,因此也为中没有非主属性,因此也为3NF。*(c) 证证 为无损分解:为无损分解:分析分析:增加:增加 R 的目的就是为了达到无损连接,的目的就是为了达到无损连接, 按照

311、无损连接判定算法,按照无损连接判定算法,R 所对应的行应该成为全所对应的行应该成为全a。*R 不一定在不一定在 中,但中,但 中必存在某关系模式的属性组中必存在某关系模式的属性组T包含包含X,*R*为简单起见,不妨设为简单起见,不妨设T就是就是X, 就在就在 中。中。X对应的列全为对应的列全为a,按照无损连接判定算法,在构造初始判定表时,对按照无损连接判定算法,在构造初始判定表时,对 所对应的行,所对应的行,R*设设 UX=A1,A2,As,欲证经有限步执行判定算法,欲证经有限步执行判定算法,该行中该行中A1,A2,As所对应的列也被改为全所对应的列也被改为全a。2024/9/1301数据库系

312、统数据库系统第五章 关系数据理论UXA1 Ai AsX R (X)* R1(Y1A1)Ri(YiAi) Rs(YsAs) 属性属性模式模式 a bb a aaaaaaaabaaabbababbabbaababaa b bb b b a bb b b b aa b baaa因为因为X是关键字,故是关键字,故X =U.+F 所以在求所以在求X的闭包时,的闭包时,A1、A2、As将进入将进入X的闭包,的闭包,不妨设进入的次序就是不妨设进入的次序就是A1、A2、As,则根据求闭包的,则根据求闭包的算法,会产生序列:算法,会产生序列:X X X X =U(2)(1)(i)满足满足 YiAi F,且,且Y

313、i X =XA1A2 A(i1)。(i1) 不失一般性,可设不失一般性,可设R1(Y1A1)、 R2(Y2A2)、 Rs(YsAs)在在 中,中,初始判定表如右上角所示。初始判定表如右上角所示。2024/9/1302数据库系统数据库系统第五章 关系数据理论证按无损判定算法,证按无损判定算法, 对应的行中对应的行中A1,A2,As所对应的列被改为全所对应的列被改为全a。R* 用归纳法:用归纳法: 当当s=1时,有时,有Y1A1 F,故,故R1所在的行中所在的行中Y1对应的列全对应的列全a;UXA1 Ai AsX R (X)* R1(Y1A1)Ri(YiAi) Rp(YpAp) 属性属性模式模式

314、a bb a aaaaaaaabaaabbababbabbaababaa b bb b b a bb b b b aa b baaaYiAi F,且,且Yi X =XA1A2 A(i1) 。(i1)行中行中X对应的列全对应的列全a,所以至少这,所以至少这两行中两行中Y1对应的列全对应的列全a,故相等。,故相等。(0)因为因为Y1 X =X,而,而R 所在所在*考察考察A1对应的列:对应的列:aa因因R1行对应的为行对应的为a,故,故R 行行A1列也改为列也改为a。*aa假设假设s=i1时,时,R 所在行所在行A1、A2、A(i1)对应列能够全改为对应列能够全改为a。*当当s=i时,有时,有Yi

315、Ai F,且,且Yi X =XA1A2 A(i1) 。(i1)与与s=1时的同样道理,根据时的同样道理,根据Ri行的行的Ai列为列为a,可将,可将R 行行Ai列也改为列也改为a。*根据归纳法原理,结论成立。根据归纳法原理,结论成立。证毕证毕aaaa2024/9/1303数据库系统数据库系统第五章 关系数据理论3、转换为、转换为BCNF的无损连接分解的无损连接分解分解法分解法算法算法5.5:算法思想算法思想:输入:关系模式输入:关系模式R;输出:输出:R的一个分解的一个分解 =R1,R2,Rk,每个,每个Ri均为均为 BCNF,且,且 具有无损连接性;具有无损连接性; 按自顶向下的方式,从关系模

316、式按自顶向下的方式,从关系模式R开始,选择开始,选择不是不是BCNF的模式将其一分为二,直到都为的模式将其一分为二,直到都为BCNF。(二叉分解)。(二叉分解)(1)初始初始:令:令 =R。(2)检查检查:检查:检查 各关系模式是否都是各关系模式是否都是BCNF。若是,算法终止。若是,算法终止。(3)分解分解:设:设 中中Ri不是不是BCNF,则存在则存在XA Fi (A X),),X不是不是Ri的关键字的关键字;+对对Ri作无损分解:作无损分解: =S1,S2UiXA UiXAXS1S2aa a bbb bbaa b aaa aa 因因X不是不是Ri的关键字,故的关键字,故XA是是Ui的真子

317、集,的真子集,且容易验证,且容易验证, 是是Ri的一个无损分解。的一个无损分解。以以 代代Ri,返回第,返回第(2)步。步。正确性证明自己看正确性证明自己看a2024/9/1304数据库系统数据库系统第五章 关系数据理论4、转换为、转换为4NF的无损连接分解的无损连接分解定理定理:设关系模式为:设关系模式为R,其中,其中D为为R中函数依赖和多值依赖的集合,中函数依赖和多值依赖的集合, 则则 XY成立成立R的分解的分解 = R1,R2 具有无损连接性,具有无损连接性,其中其中Z=UXY。证明证明:充分性。要证:充分性。要证 若若 是无损连接,则是无损连接,则XY成立。成立。多值依赖的定义多值依赖

318、的定义: 多值依赖多值依赖XY成立当且仅当对成立当且仅当对R(U)的任一关系的任一关系r,若存在元组,若存在元组s、t使得使得sX=tX,则必存在元组,则必存在元组w、v r(w、v可以与可以与s、t相同),使得相同),使得wX=vX=tX,而,而wY=tY,wZ=sZ,vY=sY,vZ=tZ。交换交换s、t的的Y值值所得新元组仍在所得新元组仍在r中中2024/9/1305数据库系统数据库系统第五章 关系数据理论4、转换为、转换为4NF的无损连接分解的无损连接分解定理定理:设关系模式为:设关系模式为R,其中,其中D为为R中函数依赖和多值依赖的集合,中函数依赖和多值依赖的集合, 则则 XY成立成

319、立R的分解的分解 = R1,R2 具有无损连接性,具有无损连接性,其中其中Z=UXY。证明证明:充分性。要证:充分性。要证 若若 是无损连接,则是无损连接,则XY成立。成立。欲证:对欲证:对R的任一关系的任一关系r,若,若t、s r,且,且tX=sX,则存在则存在u、v r使得使得 uX=vX=tX,而,而uY=tY,uZ=sZ,vY=sY,vZ=tZ。因为因为 是无损连接,是无损连接,对对R的任一关系的任一关系r,有,有 r = (r) (r)。)。XYXZ若若t、s r,且,且tX=sX,tsX Y ZsYtYtZsZ关系关系r: (r)XY (r)XZtsX YsYtYtsX ZtZsZ

320、2024/9/1306数据库系统数据库系统第五章 关系数据理论uvX Y ZtYsYtYsYtZtZsZsZts (r)XY (r)XZtsX YsYtYtsX ZtZsZ r = (r) (r)XYXZ若若t、s r,且,且tX=sX,令令 u = tXtYsZ, v = sXsYtZ,必要性。要证必要性。要证 若若XY成立,则成立,则 是无损连接。是无损连接。欲证:对欲证:对R的任一关系的任一关系r,有,有 r = (r) (r)。)。XYXZ而而 r (r) (r)显然成立,)显然成立,XYXZ故只需证故只需证 r (r) (r)XYXZ(自己证)(自己证)证毕证毕则则 u、v r满足满

321、足uX=vX=tX, 而而uY=tY,uZ=sZ, vY=sY,vZ=tZ。所以所以 XY成立。成立。2024/9/1307数据库系统数据库系统第五章 关系数据理论算法算法5.6:转换为转换为4NF的无损连接分解算法的无损连接分解算法:输入:关系模式输入:关系模式R;输出:输出:R的一个分解的一个分解 =R1,R2,Rk,每个,每个Ri均为均为4NF, 且且 具有无损连接性;具有无损连接性;以算法以算法5.5作为第一步,规范化到作为第一步,规范化到4NF时方法也同算法时方法也同算法5.5 (二叉分解)。(二叉分解)。说明说明:上述定理是在函数依赖和多值依赖的范畴内讨论问题,因此需要:上述定理是

322、在函数依赖和多值依赖的范畴内讨论问题,因此需要 建立一套新的公理系统来保证建立一套新的公理系统来保证“逻辑蕴涵逻辑蕴涵”和和“导出导出”仍是等价的。仍是等价的。 幸运的是,只要简单扩充幸运的是,只要简单扩充Armstrong公理系统(增加关于多值依赖的公理系统(增加关于多值依赖的 公理),该公理系统仍是有效的和完备的。公理),该公理系统仍是有效的和完备的。(1)用算法)用算法5.5先将先将R分解到分解到BCNF,且具有无损连接性。,且具有无损连接性。(2)对其中没达到)对其中没达到4NF的模式,根据前面定理分解,直到所有模式都的模式,根据前面定理分解,直到所有模式都 为为4NF时为止。时为止。

323、2024/9/1308数据库系统数据库系统第五章 关系数据理论P196 习题习题 2、3、12补充补充: 1、设、设F= ACPE,PGA,BCE,AP,GAB,GCA, PABG,AEGB,DPH , X=AG, 求求作业:作业:X+F2、设有关系模式、设有关系模式 R(ABCDE),),R的函数依赖集为的函数依赖集为 F=AC,BC,CD,DEC,CEA, (1)设)设 = R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE) 是是R的一个分解。试判断的一个分解。试判断 是否为无损分解。是否为无损分解。 (2)给出)给出R的一个既保持函数依赖又具有无损连接的的一个既保持函

324、数依赖又具有无损连接的3NF分解。分解。本节开头本节开头本章开头本章开头2024/9/1309数据库系统数据库系统第六章第六章 数据库设计数据库设计本章内容:本章内容:请选择内容请选择内容返回返回1 数据库设计概述数据库设计概述2 需求分析需求分析3 概念结构设计概念结构设计4 逻辑结构设计逻辑结构设计5 物理结构设计物理结构设计6 数据库的实施和维护数据库的实施和维护2024/9/1310第六章 数据库设计1 数据库设计概述数据库设计概述 数据库设计是指对一个给定的应用环境,构造最优的数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地数据库模式,

325、建立数据库及其应用系统,使之能够有效地存取数据,满足各种用户的应用需求。存取数据,满足各种用户的应用需求。一、数据库和信息系统一、数据库和信息系统 大型数据库的设计和开发是涉及多学科的综合性技术,大型数据库的设计和开发是涉及多学科的综合性技术,对涉及人员来说应具备多方面的技术知识,主要有:对涉及人员来说应具备多方面的技术知识,主要有:u 数据库的基本知识和数据库的设计知识;数据库的基本知识和数据库的设计知识;u 计算机科学的基础知识和程序设计的方法和技巧计算机科学的基础知识和程序设计的方法和技巧u 软件工程的原理和方法软件工程的原理和方法u 应用领域的知识应用领域的知识2024/9/1311第

326、六章 数据库设计二、数据库设计的特点:二、数据库设计的特点:n“三分技术,七分管理,十二分基础数据三分技术,七分管理,十二分基础数据”n数据库设计和应用系统设计相结合,即将结构设计和数据库设计和应用系统设计相结合,即将结构设计和行为设计相结合行为设计相结合2024/9/1312第六章 数据库设计三、数据库设计方法简述三、数据库设计方法简述 数据库设计方法中著名的新奥尔良方法,将数据库数据库设计方法中著名的新奥尔良方法,将数据库的设计分为四个阶段:的设计分为四个阶段:u 需求分析(分析用户要求)需求分析(分析用户要求)u 概念设计(信息分析和定义)概念设计(信息分析和定义)u 逻辑设计(设计实现

327、)逻辑设计(设计实现)u 物理设计(物理数据库设计)物理设计(物理数据库设计)数据库设计工具:数据库设计工具:ORACLE 公司公司 Design 2000 Sybase 公司的公司的PowerDesigner四、数据库设计的基本步骤四、数据库设计的基本步骤2024/9/1313第六章 数据库设计n需求分析:需求分析:了解与分析用户需求,是最困难、最费时间的一步。了解与分析用户需求,是最困难、最费时间的一步。n概念结构设计概念结构设计u通过对用户的需求进行综合、归纳和抽象,形成一个独立于具通过对用户的需求进行综合、归纳和抽象,形成一个独立于具体的体的DBMS的概念模型的概念模型n逻辑结构设计逻

328、辑结构设计u将概念结构转换为某个将概念结构转换为某个DBMS所支持的模型,并对其进行优化所支持的模型,并对其进行优化n物理结构设计物理结构设计u为逻辑数据模型选取一个最适合应用环境的物理结构(包括存为逻辑数据模型选取一个最适合应用环境的物理结构(包括存取结构和存取方法)取结构和存取方法)n数据库实施数据库实施u运用运用DBMS提供的数据语言及其宿主语言,根据逻辑设计和物提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行库,并进行试运行n数据库运行和维护数据库运行和维护数据库设计

329、的基本步骤:数据库设计的基本步骤:2024/9/1314第六章 数据库设计需求收集和分析需求收集和分析应用需求应用需求(数数据、处理据、处理设计概念结构设计概念结构设计逻辑结构设计逻辑结构数据模型优化数据模型优化设计物理结构设计物理结构评价设计、性能检测评价设计、性能检测物理实现物理实现实验性运行实验性运行使用、维护数据库使用、维护数据库转换规则、转换规则、DBMS功能、功能、优化方法优化方法应用要求、应用要求、DBMS详细详细特征特征需求分析阶段需求分析阶段概念设计阶段概念设计阶段逻辑设计阶段逻辑设计阶段物理设计阶段物理设计阶段数据库实施阶段数据库实施阶段数据库运行、维护阶段数据库运行、维护

330、阶段2024/9/1315第六章 数据库设计2 需求分析需求分析一、需求分析的任务一、需求分析的任务 通过详细调查现实世界要处理的对象通过详细调查现实世界要处理的对象(组织、部门、企业等组织、部门、企业等),充分了解原系统工作概况,明确用户的各种需求,然后在,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。此基础上确定新系统的功能。 调查的重点是调查的重点是“数据数据”和和“处理处理”,通过调查、收集与分,通过调查、收集与分析,获得用户对数据库的如下要求:析,获得用户对数据库的如下要求:n信息要求信息要求u指用户需要从数据库中获得信息的内容和性质,从而导出应指用户需

331、要从数据库中获得信息的内容和性质,从而导出应在数据库中存储哪些数据在数据库中存储哪些数据n处理要求处理要求u用户完成什么样的处理功能,对处理的响应时间有什么要求用户完成什么样的处理功能,对处理的响应时间有什么要求u处理方式是批处理还是联机事务处理处理方式是批处理还是联机事务处理n安全性与完整性要求安全性与完整性要求2024/9/1316第六章 数据库设计n调查组织机构情况调查组织机构情况u了解该组织的部门组成情况,各部门的职责,为分析信息流了解该组织的部门组成情况,各部门的职责,为分析信息流程做准备程做准备n调查各部门的业务活动情况调查各部门的业务活动情况u了解各部门的输入和使用什么样的数据了

332、解各部门的输入和使用什么样的数据u如何加工这些数据如何加工这些数据u输出什么信息输出什么信息u输出到什么部门输出到什么部门u信息输出结果的格式信息输出结果的格式n协助用户明确对新系统的各种要求协助用户明确对新系统的各种要求u信息要求、处理要求、安全性与完整性要求信息要求、处理要求、安全性与完整性要求n确定新系统的边界确定新系统的边界u确定那些由计算机来完成,那些由人工来完成确定那些由计算机来完成,那些由人工来完成二、需求分析的方法二、需求分析的方法2024/9/1317第六章 数据库设计需求调查的方法:需求调查的方法:n跟班作业跟班作业 参加业务工作来了解业务活动的情况,此种方法参加业务工作来

333、了解业务活动的情况,此种方法可以准确地了解用户的需求,但是比较耗费时间可以准确地了解用户的需求,但是比较耗费时间n开会调查开会调查 通过与用户座谈来了解业务活动情况,座谈时,通过与用户座谈来了解业务活动情况,座谈时,参加者之间可以相互启发参加者之间可以相互启发n请专人介绍请专人介绍n询问询问n设计调查表请用户填写。设计调查表请用户填写。如果调查表设计的合理,这种方如果调查表设计的合理,这种方法是很有效,也易于为用户接受。法是很有效,也易于为用户接受。n查阅记录查阅记录 做需求调查时,往往需要同时采用上述多种方法。但是无做需求调查时,往往需要同时采用上述多种方法。但是无论采用何种方法,都需要用户

334、的配合。论采用何种方法,都需要用户的配合。2024/9/1318第六章 数据库设计三、数据字典三、数据字典n数据项数据项 数据项是不可再分的数据单位。对数据项的描述通常包括以下内容数据项是不可再分的数据单位。对数据项的描述通常包括以下内容数据项描述数据项描述= 数据项名,数据项含义说明,别名,数据类型,长度,数据项名,数据项含义说明,别名,数据类型,长度,取值范围取值范围,取值含义,取值含义,与其它数据项的逻辑关系与其它数据项的逻辑关系,数据项之间的,数据项之间的联系联系 n数据结构数据结构 :反应了数据之间的组合关系:反应了数据之间的组合关系 数据结构描述数据结构描述= 数据结构名,含义说明

335、,组成:数据结构名,含义说明,组成:数据项或数据结数据项或数据结构构数据流:数据流:是数据结构在系统内传输的路径。是数据结构在系统内传输的路径。 数据流图表达了数据和处理的关系,数据字典则是系统数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细设计的数据收集和数据中各类数据描述的集合,是进行详细设计的数据收集和数据分析所获得的主要成果,数据字典在数据库设计中占有很重分析所获得的主要成果,数据字典在数据库设计中占有很重要的作用。要的作用。数据字典通常包括数据字典通常包括数据项、数据结构、数据流、数据项、数据结构、数据流、数据存储和处理过程数据存储和处理过程五个部分。

336、五个部分。2024/9/1319第六章 数据库设计n数据存储数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一,也是数据结构停留或保存的地方,也是数据流的来源和去向之一,也可以是手工文档或手工凭单,也可以是计算机文档。可以是手工文档或手工凭单,也可以是计算机文档。数据存储描述数据存储描述= 数据存储名,说明,编号,输入的数据流,输出的数据存储名,说明,编号,输入的数据流,输出的数据流,组成:数据流,组成:数据结构数据结构,数据量,数据量,存取频度存取频度,存取方式存取方式 n处理过程处理过程处理过程描述处理过程描述= 处理过程名,说明,输入:处理过程名,说明,输入: 数据流数据流,

337、输出:,输出: 数据流数据流 ,处理:,处理: 简要说明简要说明 简要说明:说明该处理过程的功能及处理要求,功能是指该处理过简要说明:说明该处理过程的功能及处理要求,功能是指该处理过程用来干什么程用来干什么处理要求包括处理频度要求,如单位时间里处理多少事务、多少、处理要求包括处理频度要求,如单位时间里处理多少事务、多少、的数据量、响应时间。的数据量、响应时间。数据流描述数据流描述=数据流名,说明,数据流来源,数据流去向,组成:数据流名,说明,数据流来源,数据流去向,组成:数据结构数据结构,平均流量,高峰期流量,平均流量,高峰期流量 2024/9/1320第六章 数据库设计3 概念结构设计概念结

338、构设计n能真实充分地反映客观世界,包括事物和事物之间的能真实充分地反映客观世界,包括事物和事物之间的联系,满足用户对数据的处理要求联系,满足用户对数据的处理要求n易于理解易于理解n易于更改易于更改n易于向关系、网状、层次等各种数据模型转换易于向关系、网状、层次等各种数据模型转换 将需求分析得到的用户需求抽象为信息结构即概念模将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。型的过程就是概念结构设计。一、概念结构的主要特点:一、概念结构的主要特点:2024/9/1321第六章 数据库设计二、概念结构设计的方法与步骤二、概念结构设计的方法与步骤n自顶向下自顶向下 首先定义各全

339、局概念框架,然后逐步细化首先定义各全局概念框架,然后逐步细化n自底向上自底向上 首先定义各局部应用的概念框架,然后将他首先定义各局部应用的概念框架,然后将他们集中起来,得到全局概念结构们集中起来,得到全局概念结构n逐步扩张逐步扩张 首先定义最重要的核心概念结构,然后向首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其它概念结构,直外扩充,以滚雪球的方式逐步生成其它概念结构,直至总体概念结构至总体概念结构n混合策略混合策略 将自顶向下和自底向上相结合,用自顶向下将自顶向下和自底向上相结合,用自顶向下策略设计一个全局的概念结构框架,以它为骨架集成策略设计一个全局的概念结构框架,以

340、它为骨架集成由底向上策略中设计的各局部概念框架。由底向上策略中设计的各局部概念框架。概念结构设计的方法:概念结构设计的方法:2024/9/1322第六章 数据库设计需求需求需求需求1需求需求n需求需求1.1需求需求1.2需求需求n.1需求需求n.2.概念模式概念模式1.1概念模式概念模式1.2概念模式概念模式n.1概念模式概念模式n.2概念模式概念模式1.概念模式概念模式n概念模式概念模式需求分析需求分析(自顶向下自顶向下)概念结构设计概念结构设计(自底向上自底向上)自顶向下分析需求与自底向上设计概念结构自顶向下分析需求与自底向上设计概念结构2024/9/1323第六章 数据库设计需求分析需求

341、分析DFDDD数据抽象、局数据抽象、局部视图的设计部视图的设计视图集成视图集成分分E-R图图总总E-R图图逻辑结构设计逻辑结构设计返回用户征求意返回用户征求意见直到满意为止见直到满意为止图图6.9逻辑结构设计步骤逻辑结构设计步骤2024/9/1324第六章 数据库设计三、数据抽象与局部视图设计三、数据抽象与局部视图设计n分类分类 定义某一类概念作为现实世界中的一组对象的定义某一类概念作为现实世界中的一组对象的类型。这些对象具有某些共同的特性和行为。它抽象类型。这些对象具有某些共同的特性和行为。它抽象了对象值和型之间的(了对象值和型之间的(is member of)语义。)语义。n聚集聚集 定义

342、了某一类型的组成成分。它抽象了对象内定义了某一类型的组成成分。它抽象了对象内部类型和成分之间的部类型和成分之间的 (is part of ) 语义。语义。n概括概括 定义了类型之间的一种子集联系。它抽象了类定义了类型之间的一种子集联系。它抽象了类型之间的(型之间的(is subset of)的语义。)的语义。如学生是一个实体如学生是一个实体型,本科生、研究生也是一个实体型。本科生和研究型,本科生、研究生也是一个实体型。本科生和研究生是学生的子集,把学生作为超类生是学生的子集,把学生作为超类(Superclass),本,本科生、研究生是子类科生、研究生是子类(Subclass)。 抽象是对实际的

343、人、物、事和概念进行人为处理,抽取所关心的抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本职的细节,并把这些特性用各种概念精确地加以共同特性,忽略非本职的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某些模型。描述,这些概念组成了某些模型。2024/9/1325第六章 数据库设计n选择局部应用选择局部应用n逐一设计分逐一设计分E-R图图 概念结构设计的第一步是利用抽象机制对需求分析阶段收集的数概念结构设计的第一步是利用抽象机制对需求分析阶段收集的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,据进行分类、组织(聚集),形成实体、实体的属性,

344、标识实体的码,确定实体之间的联系确定实体之间的联系(1:1,1:m,n:m),设计分,设计分E-R图。具体步骤:图。具体步骤:2024/9/1326第六章 数据库设计四、视图的集成四、视图的集成n多个分多个分E-R图一次集成图一次集成 复杂,难度大复杂,难度大n逐步集成逐步集成 用累加的方法一次集成两个分用累加的方法一次集成两个分E-R图图 每次只集成两个分每次只集成两个分E-R图,可以降低复杂度图,可以降低复杂度无论采用以上那种方式,每次集成局部无论采用以上那种方式,每次集成局部E-R图都要分两步走图都要分两步走u合并合并 解决各分解决各分E-R图的冲突,将各分图的冲突,将各分E-R图合并起

345、来生图合并起来生成初步的成初步的E-R图。图。属性冲突属性冲突 属性值冲突和属性域冲突属性值冲突和属性域冲突命名冲突命名冲突 同名异义和异名同义同名异义和异名同义 各子系统的分各子系统的分E-R图设计好之后,就要将各分图设计好之后,就要将各分E-R图图综合成一个系统的总综合成一个系统的总E-R图。视图集成的方式有两种:图。视图集成的方式有两种:2024/9/1327第六章 数据库设计结构冲突结构冲突 同一对象在不同应用上有不同的抽象同一对象在不同应用上有不同的抽象 同一实体在不同的分同一实体在不同的分E-R图中所包含的属性图中所包含的属性 个数和属性排列次序不完全相同。个数和属性排列次序不完全

346、相同。u修改和重构修改和重构 消除不必要的冗余,生成基本消除不必要的冗余,生成基本E-R图图消除冗余的方法:消除冗余的方法:1. 分析方法:即以数据字典和数据流图为依据,根据数分析方法:即以数据字典和数据流图为依据,根据数据字典中关于数据项之间的逻辑关系的说明来消除冗余。据字典中关于数据项之间的逻辑关系的说明来消除冗余。2. 用规范化理论中函数依赖的概念来消除冗余用规范化理论中函数依赖的概念来消除冗余2024/9/1328第六章 数据库设计用规范化理论中函数依赖的来消除冗余的方法如下:用规范化理论中函数依赖的来消除冗余的方法如下:n确定分确定分E-R图实体之间的数据依赖图实体之间的数据依赖 实

347、体之间的一对一、一对多或多对多的联系可以用实实体之间的一对一、一对多或多对多的联系可以用实体码之间的函数依赖来表示体码之间的函数依赖来表示n求函数依赖集求函数依赖集Fl的最小覆盖的最小覆盖Gl,差集为,差集为D= Fl - Gl 逐一检查逐一检查D中的函数依赖,确定是否是冗余的联系,若中的函数依赖,确定是否是冗余的联系,若是就去掉是就去掉 注意的问题:注意的问题:u冗余的联系一定在冗余的联系一定在D中,但中,但D中的联系不一定是冗余的中的联系不一定是冗余的u当实体之间存在多种联系时,要将实体之间的联系在形式当实体之间存在多种联系时,要将实体之间的联系在形式上加以区分上加以区分2024/9/13

348、29第六章 数据库设计4 逻辑结构设计逻辑结构设计逻辑结构分三步进行:逻辑结构分三步进行:u 将概念结构转换成一般的关系、层次、网状模型将概念结构转换成一般的关系、层次、网状模型u 将转换来的关系、层次、网状模型向特定的将转换来的关系、层次、网状模型向特定的DBMS支持支持下的数据模型转换下的数据模型转换u 对数据模型进行优化对数据模型进行优化概念结构概念结构基本基本E-R图图一般数据模型一般数据模型关系、层次、网状关系、层次、网状特定的特定的DBMS支支持下的数据模型持下的数据模型优化的数优化的数据模型据模型转换规则转换规则DBMS的特的特点和限制点和限制优化方法优化方法2024/9/133

349、0第六章 数据库设计一、一、E-R图向关系模型的转换图向关系模型的转换n一个实体转换成一个关系模式。实体的属性就是关系一个实体转换成一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系的属性,实体的码就是关系的码。对于实体间的联系则有以下几种情况:则有以下几种情况:n一个一个1:1的联系可以转换为一个独立的关系模式,也可的联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。以与任意一端对应的关系模式合并。如果转换成一个如果转换成一个独立的关系模式,则与该联系相联的各实体的码以及独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的

350、属性,每个实体的码联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码,如果与某一端实体对应的关系均是该关系的候选码,如果与某一端实体对应的关系模式合并,则需要在关系模式的属性中加入另一个关模式合并,则需要在关系模式的属性中加入另一个关系模式的码和联系本身的属性。系模式的码和联系本身的属性。 由于由于E-R图是由实体、实体的属性和实体之间的联图是由实体、实体的属性和实体之间的联系组成,所以就要将实体、实体的属性和实体之间的系组成,所以就要将实体、实体的属性和实体之间的联系转换为关系模式,这种转换遵循如下规则:联系转换为关系模式,这种转换遵循如下规则:2024/9/1331第六章 数

351、据库设计n一个一个1:n的联系可以转换为一个独立的关系模式,也可的联系可以转换为一个独立的关系模式,也可以与以与n端对应的关系模式合并。端对应的关系模式合并。如果转换成一个独立的如果转换成一个独立的关系模式,则与该联系相联的各实体的码以及联系本关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为身的属性均转换为关系的属性,而关系的码为n端关系端关系的码。的码。n一个一个m:n的联系可以转换为一个关系模式。的联系可以转换为一个关系模式。与该实体与该实体相联的各实体的码以及联系本身的属性均转换为关系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为

352、各实体码的组合。的属性,而关系的码为各实体码的组合。n三个或三个以上的实体间的一个多元联系可以转换为三个或三个以上的实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体码以及联一个关系模式。与该多元联系相连的各实体码以及联系本身的属性均转换为关系属性,而关系的码为各实系本身的属性均转换为关系属性,而关系的码为各实体码的组合。体码的组合。n具有相同的码的关系模式可以合并。具有相同的码的关系模式可以合并。2024/9/1332第六章 数据库设计二、数据模型的优化二、数据模型的优化n确定数据依赖;确定数据依赖;n对于各个关系模式之间的数据依赖进行极小化处理,对于各个关系模式之间的数据

353、依赖进行极小化处理,消除冗余的联系;消除冗余的联系;n按照数据依赖的理论对关系模式逐一进行分析,考察按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖,多值函数依是否存在部分函数依赖、传递函数依赖,多值函数依赖等,确定各关系模式属于第几范式;赖等,确定各关系模式属于第几范式;n按照需求分析阶段得到的处理要求,分析这些模式对按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定对某些模式是否要于这样的应用环境是否合适,确定对某些模式是否要进行合并或分解;进行合并或分解;n对关系模式进行必要的分解,提高数据操作的效率和对关系模式进行必要的分解,提

354、高数据操作的效率和存储空间的利用率。常用的分解方法是水平分解和垂存储空间的利用率。常用的分解方法是水平分解和垂直分解。直分解。2024/9/1333第六章 数据库设计三、设计用户子模式三、设计用户子模式n使用更符合用户习惯的别名使用更符合用户习惯的别名n可以对不同级别的用户定义不同的可以对不同级别的用户定义不同的View,以保证系统,以保证系统的安全性的安全性n简化用户对系统的操作简化用户对系统的操作一般一般DBMS都提供了视图的概念,可利用这一功能为局部都提供了视图的概念,可利用这一功能为局部用户设计更合适的用户外模式,并考虑下列因素:用户设计更合适的用户外模式,并考虑下列因素:2024/9

355、/1334第六章 数据库设计5 物理结构设计物理结构设计数据库的物理设计通过分为两步:数据库的物理设计通过分为两步:u 确定数据库的物理结构确定数据库的物理结构u 对物理结构进行评价,评价的重点是时间和空间效率对物理结构进行评价,评价的重点是时间和空间效率一、数据库的物理设计的内容和方法一、数据库的物理设计的内容和方法对于数据库的查询事务,需要得到如下信息:对于数据库的查询事务,需要得到如下信息: 查询的关系查询的关系 查询条件所涉及到的属性查询条件所涉及到的属性 连接条件所涉及到的属性连接条件所涉及到的属性 查询的投影属性查询的投影属性2024/9/1335第六章 数据库设计对于数据更新事务

356、,需要得到如下信息:对于数据更新事务,需要得到如下信息: 被更新的关系被更新的关系 每个关系上的更新操作条件所涉及到的属性每个关系上的更新操作条件所涉及到的属性 修改操作要改变的属性值修改操作要改变的属性值二、关系模式的存取方法选择二、关系模式的存取方法选择常用的存取方法:常用的存取方法:u 索引方法索引方法u B+树方法树方法u 聚蔟(聚蔟(Cluster)方法)方法u HASH方法方法2024/9/1336第六章 数据库设计三、确定数据库的存储结构三、确定数据库的存储结构n确定数据的存放位置确定数据的存放位置n确定系统的配置确定系统的配置2024/9/1337第六章 数据库设计四、评价物理

357、结构四、评价物理结构n评价物理数据库的方法完全依赖于所选用的评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。一个较优的合理的物理结构。2024/9/1338第六章 数据库设计6 数据库的实施和维护数据库的实施和维护n数据的载入和应用程序的调试数据的载入和应用程序的调试n数据库的试运行数据库的试运行n数据库的运行和维护数据库的运行和维护u数据库的转储和恢复数据库的转储和恢复u数据库的安全性

358、、完整性控制数据库的安全性、完整性控制u数据库性能的监督、分析和改造数据库性能的监督、分析和改造u数据库的重组织与重构造数据库的重组织与重构造2024/9/1339第六章 数据库设计第七章 事物管理-数据库恢复技术1、掌握事务的概念及性质、掌握事务的概念及性质2、掌握数据库恢复的基本技术和策略、掌握数据库恢复的基本技术和策略1 事务的基本概念事务的基本概念2 故障的种类故障的种类3 恢复的实现技术恢复的实现技术4 恢复策略恢复策略本章要求:本章要求:本章内容:本章内容:请选择内容请选择内容返回返回5 具有检查点的恢复技术具有检查点的恢复技术2024/9/1340数据库系统第七章 事物管理-数据

359、库恢复技术对数据库中存储的大量数据,有下面几个问题:对数据库中存储的大量数据,有下面几个问题: 如何使数据资源只被相关人员合理使用?如何使数据资源只被相关人员合理使用? 如何恢复被破坏的数据?如何恢复被破坏的数据? 如何协调多用户的工作来保证数据的一致性?如何协调多用户的工作来保证数据的一致性? 如何自动地发现用户的失误?如何自动地发现用户的失误?2024/9/1341数据库系统第七章 事物管理-数据库恢复技术 作为一个完善的作为一个完善的DBMS,应该提供统一的数据保护功,应该提供统一的数据保护功能来保证数据的安全可靠和正确有效!能来保证数据的安全可靠和正确有效!数据保护也叫数据控制,主要包

360、括:数据保护也叫数据控制,主要包括:本章首先讨论数据库恢复技术。本章首先讨论数据库恢复技术。2024/9/1342数据库系统第七章 事物管理-数据库恢复技术问题:系统软、硬件故障对系统数据造成破坏时,该如问题:系统软、硬件故障对系统数据造成破坏时,该如何处理?何处理?例:银行转帐例:银行转帐设从帐号设从帐号A中拨一笔款中拨一笔款X到帐号到帐号B,正常的执行过程是:,正常的执行过程是: 查看帐号查看帐号A上是否有足够的款数,即余额上是否有足够的款数,即余额 X ? 若余额若余额 =18 and SA15),PRIMARY KEY (S#);); CREATE TABLE C(C# CHAR(4)

361、 NOT NULL UNIQUE,CN VARCHAR(20) NOT NULL,PRIMARY KEY (C#);); 格式:格式: CHECK(条件)(条件)2024/9/1442数据库系统第十章 数据库完整性CREATE TABLE SC(S# CHAR(8) NOT NULL,C# CHAR(4) NOT NULL,G CHAR(1),),PRIMARY KEY (S#,C#)FOREIGN KEY (S#) REFERENCES S ON DELETE CASCADE,FOREIGN KEY (C#) REFERENCES C ON DELETE RESTRICT );); 组合主键

362、组合主键来自来自S中的外键中的外键若若S中某学生记录被删除中某学生记录被删除SC中该生选课记录全删中该生选课记录全删 若某课程有人选修,则若某课程有人选修,则C中该课程选课记录不能删中该课程选课记录不能删来自来自C中的外键中的外键2024/9/1443数据库系统第十章 数据库完整性又如:定义职工表又如:定义职工表 EMP(ENO,ENAME,DNO),), 部门表部门表 DEPT(DNO,DNAME)CREATE TABLE DEPT(DNO CHAR(4)NOT NULL UNIQUE,DNAME CHAR(12) NOT NULL,PRIMARY KEY (DNO);); CREATE T

363、ABLE EMP(ENO CHAR(5) NOT NULL UNIQUE,ENAME CHAR(8) NOT NULL,DNO CHAR(4),),PRIMARY KEY (ENO)FOREIGN KEY (DNO) REFERENCES DEPT ON DELETE SET NULL,);); 若某部门被撤消若某部门被撤消则该部门原职工则该部门原职工的的DNO置为空值置为空值2024/9/1444数据库系统第十章 数据库完整性5、说明、说明 用用SQL可在基本表定义时来定义完整性检查可在基本表定义时来定义完整性检查 优:简单、清晰优:简单、清晰 缺:不够灵活、功能不强(如插入、修改时的完整性检查)缺:不够灵活、功能不强(如插入、修改时的完整性检查) 此外此外, 用用SQL还可在基本表定义时来定义还可在基本表定义时来定义缺省(缺省(default)格式:格式:DEFAULT值值USERNULL功能:在该列未输入值时,以指定值填入功能:在该列未输入值时,以指定值填入用户指定的值用户指定的值填入用户标识符填入用户标识符填入填入NULL DEFAULT汉汉,例如,在例如,在S表中,若有民族属性,在定义表中,若有民族属性,在定义S时可如下进行:时可如下进行: CREATE TABLE S(, MZ VARCHAR(10) ););2024/9/1445数据库系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号