清华大学数据库原理课件第七章
合集下载
数据库原理PPT课件
模式
也称为逻辑模式或概念模 式,定义了数据库中所有 数据的逻辑结构和关系。
内模式
也称为物理模式或存储模 式,描述了数据在物理存 储介质上的组织结构和存 储方式。
数据库管理系统
数据定义语言(DDL)
数据控制语言(DCL)
用于定义数据库中的各种对象,如表、 视图、索引等。
用于控制对数据库中数据的访问权限 和安全控制。
数据库原理ppt课件
目录
• 数据库概述 • 数据库系统结构 • 数据库设计 • 关系数据库 • 数据库管理系统实现技术 • 数据库新技术与发展趋势
01 数据库概述
数据库的定义与作用
数据库的定义
数据库是一个长期存储在计算机 内的、有组织的数据集合,它能 为多种应用提供数据服务。
数据库的作用
数据库用于存储、检索、更新和 管理大量数据,支持企业或组织 的运营和决策。
NoSQL数据库具有可伸缩性强、灵活 性高和可靠性好等优点,可以满足大 规模数据处理和实时分析的需求。
03
NoSQL数据库的挑 战
NoSQL数据库面临着数据一致性、查 询效率和标准化等挑战,需要进一步 研究和标准化工作。
THANKS FOR WATCHING
感谢您的观看
关系数据库标准语言SQL
SQL定义
SQL(Structured Query Language)是用于管理关系数 据库的标准编程语言,它包括数 据查询、数据操作、数据定义等
方面的命令。
SQL的主要功能
SQL的主要功能包括表格的定义 和维护、数据的查询和检索、数 据的插入和更新、数据的删除等。
SQL的特点
数据操纵语言(DML)
用于对数据库中的数据进行查询、插 入、更新和删除等操作。
第7章 数据库设计-数据库原理及应用-微课视频版-李唯唯-清华大学出版社
主要内容
CONTENTS
1 两个实体集之间的联系 2 多个实体集之间的联系 3 实体集内部的联系 4 用E-R图表示概念模型
1. 两个实体集之间的联系
5. 数据字典--处理过程
• 处理过程描述业务处理的处理逻辑和输入、输出。
• 处理过程描述 ={处理过程编号,处理过程名,说明,输入: {数据流},输出:{数据流},处理:{简要说明}}
【例】“审核”处理过程的描述如下: 处理过程:审核 说明:审核入库单信息是否合格 输入:入库单 输出:合格或不合格入库单 处理:对采购员提交的入库单进行审核,检查入库单填写是否 符合要求,产品实际入库数量和金额与入库单上填写的数据是 否一致。
• 概念模型的特点 (1)能真实、充分地反映现实世界; (2)易于理解; (3)易于更改; (4)易于向关系、网状、层次等各种数据模型转换。
• 描述概念模型的工具 E-R模型
数据库原理及应用
Database Principle and Application
7.3.2 概念模型的E-R表示方法
重庆理工大学 计算机科学与工程学院
1. 需求分析的任务
• 调查的重点是“数据”和“业务处理”。 • 确定业务规则。 • 业务规则:业务处理数据以及产生数据的方法和步骤。
2. 需求信息的搜集
• 需求信息收集步骤 ✓ 业务知识的研究 ✓ 制定调研计划 ✓ 选用调研方法进行调研
• 需求信息的来源 ✓ 客户 ✓ 最终用户 ✓ 管理人员
3. 需求分析的内容
4. 业务及数据分析
业务及数据分析的内容: • 确定业务 • 业务流程分析 • 业务规则分析 • 数据流程分析
5. 数据字典--数据项
• 数据项是是不可再分的数据单位。
ch7-1--数据库原理课程PPT汇总
在进行数据库的操作时,会出现以下几方面的问题。 (1) 数据冗余。 系名, 学生姓名、年龄等等都要重复存储多次 (2) 插入异常。 (SNO,CNO)是主键。缺少一个都无法插入数 据另外,若学生未选课,同样也不能进行插入操作。 (3) 删除异常。
删去学生数据,导致课程及教师信息丢失。如 果某个学生不再选修某课程,有关该学生的其他信 息也随之丢失。 (4) 修改异常。
CNO C1 C2 C5 C6 C7 C4 C1 C2 C4 C1
SCORE 90 85 57 80
70 75 70 85 93
2020/4/25
图 关系SDC经分解后的三关系S、D与SC
12
数据库原理
数据库原理
分解后的关系模式集是一个好的关系 数据库模式。这三个关系模式都不会发生 插入异常、删除异常的毛病,数据冗余也 得到了尽可能地控制。
2020/4/25
3
数据库原理
面对一个现实问题,如何选择 一个比较好的关系模式的集合? 其中每个关系模式又由哪些属性 组成?这就是数据库逻辑设计主 要关心的问题。
2020/4/25
4
数据库原理
1 规范化理论概述
关系数据库设计理论主要 包括三个方面的内容:数据依赖、 范式(Normal Form)和模式设 计。其中函数依赖起着核心作用, 是模式分解和模式设计的基础, 范式是模式分解的标准。
MN 表示系主任名
CNO 表示课程号
SCORE 表示成绩。
2020/4/25
6
SNO S1 S1 S2 S2 S2 S2 S3 S3 S3 S4
SN 赵红 赵红 王小明 王小明 王小明 王小明 吴小林 吴小林 吴小林 张涛
AGE 20 20 17 17 17 17 19 19 19 22
清华大学数据库access课件 第07章:存储结构与文件结构
§7.2磁盘
磁盘质量的度量标准
容量大小 存取时间:
• 从发出读写请求到数据开始传输之间的时间; • 存取时间 = 寻道时间 + 旋转等待时间。
数据传输率:
• 从磁盘获得数据或者向磁盘存储数据的速率,即 I/O吞吐量。
可靠性 性价比
2018/11/12 8来自§7.3RAID 早期的RAID
转轴
磁道
读写头
扇区
旋转
磁盘臂
2018/11/12
5
§7.2磁盘
磁盘的物理特性
磁道:
• 盘片的表面被逻辑地划分为磁道。
扇区:
• 磁道又被逻辑地划分为扇区; • 扇区是从磁盘读出和写入数据的最小单位,通常 大小为512字节。
物理块:
• 一个盘片的一条磁道内几个连续的扇区构成的序 列称为物理块,一般也简称块; • 数据在磁盘和主存储器之间以块为单位传输。
2018/11/12 15
§7.5DBMS的文件管理器
数据库与文件管理
在小型关系数据库系统中将各个关系存储在 一个个独立的文件中。通常:
• 文件中的记录都是定长的,文件结构简单; • 充分利用了作为OS一部分的文件系统的好处。
大型数据库管理系统在文件管理方面并不直 接依赖于操作系统。操作系统只分配给DBMS 一个大的操作系统文件,所有关系都存储在 这个大文件中。它的好处是:
实现冗余的第二种方法是存储奇偶校验位。
2018/11/12 10
§7.3RAID
如何提高磁盘的性能
通过在多个磁盘上对数据进行拆分来提高传 输率,原因是可以对多个磁盘并行存取。
拆分的方法
比特级拆分:
• 数据拆分的最简单形式是将每个字节按比特位分 开,存储到多个磁盘上。
第7章 PLSQL基础-数据库原理与应用教程(Oracle 12c版)-赵明渊-清华大学出版社
第7章 PL/SQL基础
7.1 SQL和PL/SQL 7.2 在PL/SQL中的数据定义语言 7.3 在PL/SQL中的数据操纵语言 7.4 在PL/SQL中的数据查询语言
数据库原理与应用教程
(Oracle 12c 版)
1
•
7.1 SQL和PL/SQL
7.1.1 SQL语言
SQL语言是应用于数据库的结构化查询语言,是一种非过程性语言, 本身不能脱离数据库而存在。一般高级语言存取数据库时要按照程序顺序处 理许多动作,使用SQL语言只需简单的几行命令,由数据库系统来完成具体 的内部操作。
(3)面向集合的操作方式 SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的 集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。
(4)既是自含式语言、又是嵌入式语言 SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可 以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言, SQL语句能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程 序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的, 提供了极大的灵活性与方便性。
(4)数据控制语言(Data Control Language, DCL)
用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语 句。
2. SQL语言的特点
SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作 方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等 特点。
表7.1 SQL语言的动词
数据库原理与应用教程
(Oracle 12c 版)
5
•
7.1 SQL和PL/SQL
7.1 SQL和PL/SQL 7.2 在PL/SQL中的数据定义语言 7.3 在PL/SQL中的数据操纵语言 7.4 在PL/SQL中的数据查询语言
数据库原理与应用教程
(Oracle 12c 版)
1
•
7.1 SQL和PL/SQL
7.1.1 SQL语言
SQL语言是应用于数据库的结构化查询语言,是一种非过程性语言, 本身不能脱离数据库而存在。一般高级语言存取数据库时要按照程序顺序处 理许多动作,使用SQL语言只需简单的几行命令,由数据库系统来完成具体 的内部操作。
(3)面向集合的操作方式 SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的 集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。
(4)既是自含式语言、又是嵌入式语言 SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可 以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言, SQL语句能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程 序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的, 提供了极大的灵活性与方便性。
(4)数据控制语言(Data Control Language, DCL)
用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语 句。
2. SQL语言的特点
SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作 方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等 特点。
表7.1 SQL语言的动词
数据库原理与应用教程
(Oracle 12c 版)
5
•
7.1 SQL和PL/SQL
清华大学数据库access课件 第07章:存储结构和文件结构资料
• Redundant Arrays of Independent Disks; • 中文称为“独立磁盘冗余阵列”。
➢ 未来的RAID?真正的百年存储……
2020/9/20
9
§7.3RAID
➢如何提高磁盘的可靠性?
✓ 引入冗余是解决可靠性问题的有效方法:
• 存储一些通常情况下不需要的额外信息,这些信 息可在发生磁盘故障时用于重建丢失的信息。
数据库系统设计与原理
第Ⅱ部分 数据存储 (第7章-第8章)
2020/9/20
1
第7章 存储结构和文件结构
讲课内容:
主要介绍数据库系统的底层存储。包 括存储介质、数据库文件的组织及结 构、文件中记录的组织及结构。
■物理存储介质 ■文件结构
■磁盘
■文件中记录的组织
■RAID
■数据字典的存储
■第三级存储
➢ 随着数据的不断膨胀,数据越来越多,我 们称之为海量信息;
➢ 在当前,我们主要用光盘塔或磁带库来存 储海量信息,并且使它们变成近线(nearline)或在线(on-line)的存储介质。也就 是说,跨过二级存储设备在内存和光盘或 磁带之间直接传输数据。
2020/9/20
14
§7.5DBMS的文件管理器
➢ DBMS一般不用OS的文件管理器,而是独立 设计其存储结构,有自己的文件管理器。 这有以下5个方面的原因:
5. 数据的稳定性与动态变化:
•传统的文件一旦建立以后,数据量是比较稳定 的,而且一般只用于只读的应用;
•数据库文件的数据量变化较大,有些文件在数 据模式刚定义时几乎是个空架子,随着应用的 开发,数据也不断地增长:
➢DBMS的物理存储综述
✓ 了解数据库的存储结构就必须搞清楚:
➢ 未来的RAID?真正的百年存储……
2020/9/20
9
§7.3RAID
➢如何提高磁盘的可靠性?
✓ 引入冗余是解决可靠性问题的有效方法:
• 存储一些通常情况下不需要的额外信息,这些信 息可在发生磁盘故障时用于重建丢失的信息。
数据库系统设计与原理
第Ⅱ部分 数据存储 (第7章-第8章)
2020/9/20
1
第7章 存储结构和文件结构
讲课内容:
主要介绍数据库系统的底层存储。包 括存储介质、数据库文件的组织及结 构、文件中记录的组织及结构。
■物理存储介质 ■文件结构
■磁盘
■文件中记录的组织
■RAID
■数据字典的存储
■第三级存储
➢ 随着数据的不断膨胀,数据越来越多,我 们称之为海量信息;
➢ 在当前,我们主要用光盘塔或磁带库来存 储海量信息,并且使它们变成近线(nearline)或在线(on-line)的存储介质。也就 是说,跨过二级存储设备在内存和光盘或 磁带之间直接传输数据。
2020/9/20
14
§7.5DBMS的文件管理器
➢ DBMS一般不用OS的文件管理器,而是独立 设计其存储结构,有自己的文件管理器。 这有以下5个方面的原因:
5. 数据的稳定性与动态变化:
•传统的文件一旦建立以后,数据量是比较稳定 的,而且一般只用于只读的应用;
•数据库文件的数据量变化较大,有些文件在数 据模式刚定义时几乎是个空架子,随着应用的 开发,数据也不断地增长:
➢DBMS的物理存储综述
✓ 了解数据库的存储结构就必须搞清楚:
数据库系统原理教学课件-07.ppt
全码 – 整个属性组是码,称为全码(All-key)
23
[例2] 关系模式S(Sno,Sdept,Sage),单个属性Sno是码, SC(Sno,Cno,Grade)中,(Sno,Cno)是码
[例3] 关系模式R(P,W,A) P:演奏者 W:作品 A:听众 一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品
18
完全函数依赖与部分函数依赖
在R(U)中,如果X→Y,并且对于X的任何一个真 子集X’,都有X’ Y, 则称Y对X完全函数依赖 ,记作 X F Y。 若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X P Y。
19
[例1] 中(Sno,Cno)→F Grade是完全函数依赖, (Sno,Cno)→P Sdept是部分函数依赖 因为Sno →Sdept成立,且Sno是(Sno,
当且仅当U上的一个关系r满足F时,r称 为关系模式 R(U, F)的一个关系
7
函数依赖对关系模式的影响
[例1]建立一个描述学校教务的数据库: 学生的学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname) 成绩(Grade)
单一的关系模式 : Student <U、F>
4
数据依赖
一个关系内部属性与属性之间的约束关系 现实世界属性间相互联系的抽象 数据内在的性质 语义的体现
5
数据依赖的类型
函数依赖 Functional Dependency,简记为FD 多值依赖 Multivalued Dependency,简记为MVD
6
关系模式的简化表示
关系模式R(U, D, DOM, F) 简化为一个三元组: R(U, F)
23
[例2] 关系模式S(Sno,Sdept,Sage),单个属性Sno是码, SC(Sno,Cno,Grade)中,(Sno,Cno)是码
[例3] 关系模式R(P,W,A) P:演奏者 W:作品 A:听众 一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品
18
完全函数依赖与部分函数依赖
在R(U)中,如果X→Y,并且对于X的任何一个真 子集X’,都有X’ Y, 则称Y对X完全函数依赖 ,记作 X F Y。 若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X P Y。
19
[例1] 中(Sno,Cno)→F Grade是完全函数依赖, (Sno,Cno)→P Sdept是部分函数依赖 因为Sno →Sdept成立,且Sno是(Sno,
当且仅当U上的一个关系r满足F时,r称 为关系模式 R(U, F)的一个关系
7
函数依赖对关系模式的影响
[例1]建立一个描述学校教务的数据库: 学生的学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname) 成绩(Grade)
单一的关系模式 : Student <U、F>
4
数据依赖
一个关系内部属性与属性之间的约束关系 现实世界属性间相互联系的抽象 数据内在的性质 语义的体现
5
数据依赖的类型
函数依赖 Functional Dependency,简记为FD 多值依赖 Multivalued Dependency,简记为MVD
6
关系模式的简化表示
关系模式R(U, D, DOM, F) 简化为一个三元组: R(U, F)
数据库系统原理教程(第七章)清华大学
SYBASE关系数据库产品(续)
Sybase System 11.5 – SQLServer,关系数据库管理系统,专门负 责高速计算、数据管理、事务管理
ORACLE的Internet解决方案(续)
Oracle WebServer 2.0 增加了JAVA解释器和
LiveHTML解释器,使其能支持多种语言 由Web Request Broker(WRB), WebServer SDK 和 Webserver管理工具组成 – WRB是一个多线索多进程的HTTP服务器 – WebServer SDK 是一个开放的应用开发环境, 封装了WRB应用编程接口,允许用户使用 JAVA, LiveHTML, C++等web应用开发工 具
ORACLE工具(续)
Designer/2000 – CASE工具,帮助用户对复杂系统进行建模、 分析和设计 – 完成概要设计后,可以用来帮助绘制E-R 图、功能分层图、数据流图和方阵图,自动 生成数据字典、数据库表、应用代码和文档 – 由BPR, Modellers, Generators等组成
ORACLE工具(续)
Developer/2000(续) – ORACLE Forms 是快速生成基于屏幕的复 杂应用的工具,所生产的应用程序具有查询 和操纵数据的功能,可以现实多媒体信息, 具有GUI界面 – ORACLE Reprots是快速生产报表工具,如 普通报表、主从式报表、矩阵报表 – ORACLE Graphics是快速生产图形应用的 工具 – ORACLE Books用于生成联机文档
7. ORACLE的Internet解决方案
Oracle WebServer 1.0 主要由Oracle
WebListener, Oracle WebAgent和ORACLE7 服务器部分组成
数据库系统概论课件PPT第七章(高等教育出版社第四版)
第四节 恢复的实现技术
• 恢复机制涉及两个关键问题:一、如何 建立冗余数据;二、如何利用这些冗余 数据实施数据库恢复。 • 建立冗余数据最常用的技术是转储和登 录日志文件,通常在一个数据库系统中 这两种方法是一起使用的。
一、数据转储
• 数据转储是数据库恢复中采用的基本技术。转 储即DBA定期地将整个数据库复制到磁带或另 一个磁盘上保存起来的过程。这些备用的数据 文本称为后备副本或后援副本。 • 当数据库遭到破坏后可以将后备副本重新装入, 但重装后备副本只能将数据库恢复到转储时的 状态,要想恢复到故障发生时的状态,必须重 新运行自转储后的所有更新事务。
第七节 数据库镜像
• 随着磁盘容量越来越大,价格越来越便宜,为 避免磁盘介质出现故障,影响数据库的可用性, 许多数据库管理系统提供了数据库镜像 (Mirror)功能用于数据库恢复。 • 由于数据库镜像是通过复制数据库实现的,频 繁地复制数据自然会降低系统运行效率,因此 在实际应用中用户往往只选择对关键数据和日 志文件镜像,而不是对整个数据库进行镜像。
第二节 数据库恢复概述
• 尽管系统中采取了各种保护措施来防止数据库 的安全性和完整性被破坏,保证并发事务的正 确执行,但是计算机系统中硬件的故障、软件 的错误、操作员的失误以及恶意的破坏仍是不 可避免的,这些故障轻则造成运行事务非正常 中断,影响数据库中数据的正确性,重则破坏 数据库,是数据库中全部或部分数据丢失,因 此数据库管理系统必须具有把数据库从错误状 态恢复到某一已知的状态的功能,这就是数据 库的恢复。恢复子系统是数据库管理系统的一 个重要组成部分,而且还相当庞大,常常占整 个系统代码的10%以上。
第七章 数据库恢复技术
• 事务是一系列的数据库操作,使数据库 应用程序的基本逻辑单元。事务处理技 术主要包括数据库恢复技术和并发控制 技术。 • 数据库恢复机制和并发机制是数据库管 理系统的重要组成部分。
清华大学数据库原理课件第七章(2)
16
Example of 3NF
R = (J, K, L) Two candidate keys, JK and JL
– R is in 3NF
JK L JK is a superkey L K K is contained in a candidate key
BCNF decomposition has (JL) and (LK) F = {JK L, L K}
– We can show that if none of the dependencies in F
causes a violation of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either
– R1 = (branch-name, branch-city, assets) – R2 = (branch-name, customer-name, loan-number, amount) – R3 = (branch-name, loan-number, amount) – R4 = (customer-name, loan-number)
is trivial (i.e., ) is a superkey for R
3
Example
R = (A, B, C) F = {A B B C} Key = {A} R is not in BCNF Decomposition R1 = (A, B), R2 = (B, C)
19
3NF Decomposition Algorithm
6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R is not in BCNF Decomposition R1 = (A, B), R2 = (B, C)
– R1 anபைடு நூலகம் R2 in BCNF – Lossless-join decomposition – Dependency preserving
4
Testing for BCNF
To check if a non-trivial dependency in F+ causes a violation of BCNF
6
No Test on a Decomposition of R
Consider R (A, B, C, D), with F = { A B, B C}
– Decompose R into R1(A,B) and R2(A,C,D) – Neither of the dependencies in F contain only
Key = {loan-number, customer-name}
Decomposition
– R1 = (branch-name, branch-city, assets)
– R2 = (branch-name, customer-name, loan-number, amount)
– R3 = (branch-name, loan-number, amount)
1. compute + (the attribute closure of ) 2. verify that it includes all attributes of R, that is, it is
a superkey of R
5
Simplified Testing for BCNF
To check if a relation schema R with a given set of functional dependencies F is in BCNF, it suffices to check only the dependencies in the given set F for violation of BCNF, rather than checking all dependencies in F+
attributes from (A,C,D) so we might be mislead into thinking R2 satisfies BCNF – In fact, dependency A C in F+ shows R2 is not in BCNF
However, using only F is incorrect when testing a relation in a decomposition of R
数据库原理
Chapter7 RelationalDatabaseDesign(c1)
2003年/秋
Main Contents
Boyce-Codd Normal Form Third Normal Form Multivalued Dependencies Fourth Normal Form Overall Database Design Process
7
BCNF Decomposition Algorithm
result := {R}; done := false;
compute F+;
while (not done) do
if (there is a schema Ri in result that is not in BCNF) then begin
– R4 = (customer-name, loan-number)
Final decomposition
R1, R3, R4
9
Testing Decomposition with F+
A relation Ri in a decomposition of R
– Test Ri for BCNF with respect to the restriction of F to Ri (that is, all FDs in F+ that contain only attributes from Ri)
2
Boyce-Codd Normal Form
A relation schema R is in BCNF with respect to a set F of functional dependencies
if for all functional dependencies in F+ of the form
, where R and R,
at least one of the following holds:
is trivial (i.e., ) is a superkey for R
3
Example
R = (A, B, C) F = {A B B C} Key = {A}
– We can show that if none of the dependencies in F causes a violation of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either
Ri Ri--
8
Example of BCNF Decomposition
R = (branch-name, branch-city, assets, customer-name, loan-number, amount)
F = {branch-name assets branch-city loan-number amount branch-name}
let be a nontrivial
functional dependency
that
holds on R?i such that Ri is not in F+, and
= ;
result := (result – Ri) (Ri – ) (, );
end
else done := true;
– R1 anபைடு நூலகம் R2 in BCNF – Lossless-join decomposition – Dependency preserving
4
Testing for BCNF
To check if a non-trivial dependency in F+ causes a violation of BCNF
6
No Test on a Decomposition of R
Consider R (A, B, C, D), with F = { A B, B C}
– Decompose R into R1(A,B) and R2(A,C,D) – Neither of the dependencies in F contain only
Key = {loan-number, customer-name}
Decomposition
– R1 = (branch-name, branch-city, assets)
– R2 = (branch-name, customer-name, loan-number, amount)
– R3 = (branch-name, loan-number, amount)
1. compute + (the attribute closure of ) 2. verify that it includes all attributes of R, that is, it is
a superkey of R
5
Simplified Testing for BCNF
To check if a relation schema R with a given set of functional dependencies F is in BCNF, it suffices to check only the dependencies in the given set F for violation of BCNF, rather than checking all dependencies in F+
attributes from (A,C,D) so we might be mislead into thinking R2 satisfies BCNF – In fact, dependency A C in F+ shows R2 is not in BCNF
However, using only F is incorrect when testing a relation in a decomposition of R
数据库原理
Chapter7 RelationalDatabaseDesign(c1)
2003年/秋
Main Contents
Boyce-Codd Normal Form Third Normal Form Multivalued Dependencies Fourth Normal Form Overall Database Design Process
7
BCNF Decomposition Algorithm
result := {R}; done := false;
compute F+;
while (not done) do
if (there is a schema Ri in result that is not in BCNF) then begin
– R4 = (customer-name, loan-number)
Final decomposition
R1, R3, R4
9
Testing Decomposition with F+
A relation Ri in a decomposition of R
– Test Ri for BCNF with respect to the restriction of F to Ri (that is, all FDs in F+ that contain only attributes from Ri)
2
Boyce-Codd Normal Form
A relation schema R is in BCNF with respect to a set F of functional dependencies
if for all functional dependencies in F+ of the form
, where R and R,
at least one of the following holds:
is trivial (i.e., ) is a superkey for R
3
Example
R = (A, B, C) F = {A B B C} Key = {A}
– We can show that if none of the dependencies in F causes a violation of BCNF, then none of the dependencies in F+ will cause a violation of BCNF either
Ri Ri--
8
Example of BCNF Decomposition
R = (branch-name, branch-city, assets, customer-name, loan-number, amount)
F = {branch-name assets branch-city loan-number amount branch-name}
let be a nontrivial
functional dependency
that
holds on R?i such that Ri is not in F+, and
= ;
result := (result – Ri) (Ri – ) (, );
end
else done := true;