数据库系统原理模式分解算法
- 格式:docx
- 大小:22.68 KB
- 文档页数:7
第一章数据库概论1.人工管理阶段,文件系统阶段,数据库阶段,高级数据库阶段(对象数据库技术,分布式数据库系统,开放数据库互连技术,xml数据库技术,现代信息集成技术)2.数据描述:概念设计中:实体,实体集,属性,实体标识符;逻辑设计中:字段,记录,文件,关键码;物理设计中:位,字节,字,块,桶,卷;3.概念模型,逻辑模型(层次,网状,关系,对象),外部模型,内部模型;4.三层模式(外模式,逻辑模式,内模式),两级映像(外模式/逻辑模式映像,逻辑模式/内模式映像)5.数据库系统:数据库,硬件,软件,数据库管理员第二章关系模型和关系运算理论1.超键:能唯一标识元组的属性或属性集。
候选键:不含有多余属性的超键主键:用户选作元祖标识的候选键。
外键:是其他模式的主键。
实体完整性规则,参照完整性规则,用户定义的完整性规则关系模式的三层体系结构:关系模式,子模式,存储模式2.关系代数的5个基本操作:并,差,笛卡尔积,投影,选择;关系代数的4个组合操作:交,连接,自然连接,除法。
关系代数的7个扩充操作:改名,广义投影,赋值,外连接,外部并,半连接,聚集操作3.关系代数表达式的启发式优化算法:尽可能早的执行选择操作;尽可能早的执行投影操作;避免直接做笛卡尔积第三章关系数据库语言SQL1.SQL的组成:数据定义语言,数据操纵语言,嵌入式,数据控制语言2.数据定义:数据类型ok,数据库,数据表,索引的创建等ok。
3.数据查询,数据更新ok。
4,视图,嵌入式,动态SQL语句,存储过程。
第四章关系数据库的规范化设计1.定义1:函数依赖:设有关系模式R(U),U为属性集,x、y为U的子集,函数依赖(FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FDX→Y在关系模式R(U)中成立。
定义2:如果X→Y和Y→X同时成立,则可记为X←→Y。
定义3:设F是在关系模式R上成立的函数依赖的集合,X→Y 是一个函数依赖。
数据库原理叠加定理数据库原理:叠加定理数据库系统是一种应用程序,它可以存储和操作有组织的数据。
在数据库系统中,有许多概念和理论,其中一个重要的理论就是叠加定理。
叠加定理是指,对于一个关系模式R和它的两个分解S和T,如果S和T没有公共属性,那么对于任何可能的关系r在R上的操作序列,使用S和T的投影操作所得到的结果都是相同的。
换句话说,如果一个关系模式可以被分解成两个模式,那么这两个模式的投影操作可以被叠加起来,而且不会影响最终结果。
为了更好地理解叠加定理,我们可以通过一个例子来说明。
假设我们有一个关系模式R(A,B,C),其中A、B、C分别为属性。
我们将R 分解成两个模式S(A,B)和T(B,C),其中S和T没有公共属性。
现在,我们对R上进行一系列操作,包括选择、投影、连接、并、差等操作。
根据叠加定理,我们可以将这些操作分别应用于S和T,然后将它们的结果进行连接操作,最终得到的结果与直接在R上进行操作的结果是相同的。
叠加定理的重要性在于,它可以帮助我们设计出更好的关系模式分解,从而提高数据库系统的性能。
如果我们能够将一个大的关系模式分解成多个小的模式,并且这些小的模式之间没有公共属性,那么我们就可以利用叠加定理来优化查询性能。
叠加定理还可以帮助我们理解数据库系统中的一些优化技术,比如垂直分割和水平分割。
垂直分割是指将一个关系模式按照属性进行划分,每个分割后的模式只包含原模式的一部分属性。
水平分割是指将一个关系模式按照行进行划分,每个分割后的模式只包含原模式的一部分行。
通过垂直分割和水平分割,我们可以将一个大的关系模式分解成多个小的模式,从而提高查询性能。
而叠加定理则可以帮助我们验证这些分解是否正确,并且在分解后的模式上进行操作时不会影响最终结果。
叠加定理是数据库系统中一个非常重要的理论,它可以帮助我们设计出更好的关系模式分解,提高查询性能,并且帮助我们理解数据库系统中的一些优化技术。
如果您是一名数据库系统的从业者或者学习者,那么掌握叠加定理是非常必要的。
自考04735数据库原理及应用关系模式设计理论要求、目标:了解关系数据库规范化理论及其在数据库设计中的作用,重点是函数依赖和范式,要求掌握这些概念并能运用它们来进行模式分解。
一、关系模式的设计准则1.数据冗余:同一个数据在系统中多次重复出现。
2.关系模式设计不当引起的异常问题:数据冗余、操作异常(包括修改异常、插入异常和删除异常)3.关系模式的非形式化设计准则1)关系模式的设计应尽可能只包含有直接联系的属性,不要包含有间接联系的属性。
也就是,每个关系模式应只对应于一个实体类型或一个联系类型。
2)关系模式的设计应尽可能使得相应关系中不出现插入异常、删除和修改等操作异常现象。
3)关系模式的设计应尽可能使得相应关系中避免放置经常为空值的属性。
4)关系模式的设计应尽可能使得关系的等值连接在主键和外键的属性上进行,并且保证以后不会生成额外的元组。
4.习惯使用的一些符号:1)英文字母表首部的大写字母“A,B,C,…”表示单个的属性。
2)英文字母表尾部的大写字母“…,U,V,W,X,Y,Z”表示属性集。
3)大写字母R表示关系模式,小写字母r表示其关系。
4)关系模式的简化表示方法:R(A,B,C,…)或R(ABC…)5)属性集X和Y的并集简写为XY。
二、函数依赖1.函数依赖(FD)的定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形成X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立。
说明:1)t[X]表示元组t在属性集X上的值,其余类同。
2)X→Y读作“X函数决定Y”或“Y函数依赖于X”。
3)FD是对关系模式R的一切可能的关系r定义的。
对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之对应,或者说Y值由X值决定。
例:设关系模式R(ABCD),在R的关系中,属性值间有这样的联系:A值与B值有一对多联系;C值与D值之间有一对一联系。
数据库系统原理⎽(1)授权grant的一般格式为:grant<权限> on <对象类型> to <用户>其语义是将指定操作对象的指定操作权限授予指定的用户;不同对象类型允许的操作权限例如:把查询student权限授权给用户U1;Grant select on table student to U1;⎽(2)收回权限revoke格式:revoke <权限> on<对象类型> from <用户>例如:把用户U4修改学生学号的权限收回Revoke update(sno) on table student from u4;⎽超键(super key)、候选键(candidate key)和主键(primary key)的区别?超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键候选键(candidate key):不含有多余属性的超键称为候选键主键(primary key):用户选作元组标识的一个候选键程序主键比如一个小范围的所有人,没有重名的,考虑以下属性身份证姓名性别年龄身份证唯一,所以是一个超键姓名唯一,所以是一个超键(姓名,性别)唯一,所以是一个超键(姓名,性别,年龄)唯一,所以是一个超键--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的身份证唯一,而且没有多余属性,所以是一个候选键姓名唯一,而且没有多余属性,所以是一个候选键--这里可以看出,候选键是没有多余属性的超键考虑输入查询方便性,可以选择身份证为主键也可以考虑习惯选择姓名为主键--主键是选中的一个候选键封锁粒度与系统的并发度成反比。
试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对数据库系统有什么益处?答:原子性:一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要么全部执行,要么什么也不做(由DBMS的事务管理子系统来实现);一致性:一个事务独立执行的结果,应(由DBMS的完整性子系统执行测试任务);隔离性(由DBMS的并发控制子系统实现);持久性(由DBMS的恢复管理子系统实现的)。
数据库系统原理教学大纲数据库系统原理'课程将从数据模型、关系代数、SQL语言、安全性控制、完整性控制、数据库设计规范化理论、数据库设计实践方法、关系数据库查询处理及优化、数据库的并发与恢复机制等全方位讲述数据库系统的核心知识和运行机制。
课程概述‘数据库系统原理’是一门知识综合性较强的课程,华中科技大学计算机学院的本慕课课程将全方位讲述数据库系统中的核心软件知识,主要内容包括数据库系统中蕴含的计算机的抽象科学方法、数据处理理论、数据操作语言、安全性与完整性控制原理、数据库管理系统的并发与恢复的原理和技术等专业知识。
在具备了数据结构、C语言、操作系统等先修课程知识的基础上,通过学习本‘数据库系统原理’慕课课程,可以开拓对于计算机系统数据管理方向的思维,加深对于先修课知识的理解,并系统、完整的形成数据库管理系统这一计算机系统中重要基础软件的抽象建模、数据的访问与控制、事务处理机制等核心内容的知识体系。
课程大纲01第1章绪论了解数据库的基本概念与发展历程,理解主要数据模型的特点,理解数据库系统的结构,理解数据库系统多层模式及数据独立性思想,了解数据库系统的组成与基本功能。
课时1.1 数据管理技术概述1.2 数据模型基本概念与概念模型1.3 层次与网状模型1.4 关系模型1.5 数据库系统结构1.6 数据库系统组成02关系数据库理解关系数据结构及其形式化定义,了解关系完整性基本思想,掌握关系代数运算。
课时2.1 关系模型2.2 关系代数集合运算与基本关系运算2.3 连接与除运算03关系数据库标准语言SQL了解SQL语言的发展与特点,理解SQL基本概念,掌握数据定义、查询、更新、视图定义及使用等基本SQL语法,能够灵活书写单表查询、聚集函数和分组查询、多表连接查询、嵌套查询等常见查询的SQL语句。
课时3.1 SQL语言概述3.2 数据定义概述3.3 基本表定义3.4 查询概述3.5 单表查询(上)3.6 单表查询(下)3.7 聚集函数和分组3.8 多表连接查询3.9 嵌套查询(上)3.10 嵌套查询(下)3.11 数据更新3.12 视图04数据库安全性理解数据库系统安全性控制的内涵,了解相关现状,理解自主存取控制、强制存取控制等数据库系统的主要安全性控制机制。
函数依赖的公理系统:设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U 中属性的函数依赖集,推理规则如下:•自反律:如果Y X U,则X→Y在R上成立。
•增广律:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。
(XZ表示X∪Z,下同)•传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。
以上三条为Armstrong公理系统•合并律:如果X→Y和X→Z成立,那么X→YZ成立。
•伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。
•分解律:如果X→Y和Z Y成立,那么X→Z成立。
这三条为引理注意:•函数依赖推理规则系统(自反律、增广律和传递律)是完备的。
•由自反律所得到的函数依赖均是平凡的函数依赖。
模式分解的几个重要事实:•若只要求分解具有“无损连接性”,一定可以达到4NF;•若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF;•若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF;试分析下列分解是否具有无损联接和保持函数依赖的特点:设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。
首先,检查是否具有无损联接特点:第1种解法--算法4.2:(1) 构造表(2)根据A→B进行处理结果第二行全是a行,因此分解是无损联接分解。
第2种解法:(定理4.8)R1(AB)∩R2(AC)=AR2- R1=B∵A→B,∴该分解是无损联接分解。
然后,检查分解是否保持函数依赖πR1(F1)={A→B,以及按自反率推出的一些函数依赖}πR2(F1)={按自反率推出的一些函数依赖}F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。
保持函数依赖的模式分解一、转换成3NF的保持函数依赖的分解算法:ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为X i →Alj,其步骤如下:① 对R<U,F>的函数依赖集F进行极小化处理(处理后的结果仍记为F);② 找出不在F中出现的属性,将这样的属性构成一个关系模式。
把这些属性从U中去掉,剩余的属性仍记为U;③ 若有X→A F,且XA=U,则ρ={R},算法终止;④ 否则,对F按具有相同左部的原则分组(假定分为k组),每一组函数依赖Fi所涉及的全部属性形成一个属性集Ui 。
若UiUj(i≠j),就去掉Ui。
由于经过了步骤②,故U=∪Ui ,于是ρ构成的一个保持函数依赖的分解。
并且,每个Ri(Ui,Fi)均属于3NF且保持函数依赖。
例1:关系模式R<U,F>,其中U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},将其分解成3NF并保持函数依赖。
解:根据算法进行求解(一)计算F的最小函数依赖集① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。
由于F的所有函数依赖的右边都是单个属性,故不用分解。
② 去掉F中多余的函数依赖A.设CS→G为冗余的函数依赖,则去掉CS→G,得:F1={C→T,TH→I,HI→C,HS→I}+:计算(CS)F1设X(0)=CS计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。
故有X(1)=X(0)∪T=CST。
计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。
故有X(2)=X(1)。
算法终止。
+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。
(CS)F1B.设C→T为冗余的函数依赖,则去掉C→T,得:F2={CS→G,TH→I,HI→C,HS→I}+:计算(C)F2设X(0)=C计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。
故有X(1)=X(0)。
算法终止。
故C→T不是冗余的函数依赖,不能从F2中去掉。
C.设TH→I为冗余的函数依赖,则去掉TH→I,得:F3={CS→G,C→T,HI→C,HS→I}+:计算(TH)F3设X(0)=TH计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。
故有X(1)=X(0)。
算法终止。
故TH→I不是冗余的函数依赖,不能从F3中去掉。
D.设HI→C为冗余的函数依赖,则去掉HI→C,得:F4={CS→G,C→T,TH→I,HS→I}计算(HI)F4+:设X(0)=HI计算X(1):扫描F4中的各个函数依赖,没有找到左部为HI或HI子集的函数依赖。
故有X(1)=X(0)。
算法终止。
故HI→C不是冗余的函数依赖,不能从F4中去掉。
E.设HS→I为冗余的函数依赖,则去掉HS→I,得:F5={CS→G,C→T,TH→I,HI→C}计算(HS)F5+:设X(0)=HS计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。
故有X(1)=X(0)。
算法终止。
故HS→I不是冗余的函数依赖,不能从F5中去掉。
即:F5={CS→G,C→T,TH→I,HI→C,HS→I}③ 去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖)没有发现左边有多余属性的函数依赖。
故最小函数依赖集为:F={CS→G,C→T,TH→I,HI→C,HS→I}(二)由于R中的所有属性均在F中都出现,所以转下一步。
(三)对F按具有相同左部的原则分为:R1=CSG,R2=CT,R3=THI,R4=HIC,R5=HSI。
所以ρ={R1(CSG),R2(CT),R3(THI),R4(HIC),R5(HSI)}。
二、转换成3NF的保持无损连接和函数依赖的分解算法:输入关系模式R和R的最小函数依赖集F。
输出R<U,F>的一个分解ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>},Ri为3NF,且ρ具有无损连接又保持函数依赖的分解。
步骤① 根据算法1求出保持函数依赖的分解ρ={R1,R2,...,Rk}② 判断分解ρ是否具有无损连接性,若有,转④③ 令ρ=ρ∪{X},其中X是R的候选关键字(候选码);④ 输出ρ例2:关系模式R<U,F>,其中:U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},将其分解成3NF并保持无损连接和函数依赖。
解:① 根据例1,得到3NF并保持函数依赖的分解如下:ρ={R1(CSG),R2(CT),R3(THI),R4(HIC),R5(HSI)}。
② 判断是否是无损连接构造一个初始的二维表,若“属性”属于“模式”中的属性,则填aj ,否则填bij。
根据C→T,对上表的处理结果如下表。
根据HI→C,对上表的处理结果如下表。
根据CS→G,对上表的处理结果如下表。
根据C→T,对上表的处理结果如下表。
通过上述的修改,使第五行成为a1a2a3a4a5a6,则算法终止。
且分解具有无损连接性。
三、转换成BCNF的保持无损连接的分解算法:输入关系模式R和R的函数依赖集F。
输出 R<U,F>的一个分解ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>},Ri为BCNF,且ρ具有无损连接的分解。
步骤① 令ρ={R},根据算法1求出保持函数依赖的分解ρ={R1,R2,...,Rk}② 若ρ中的所有模式都是BCNF,转④③ 若ρ中有一个关系模式Ri 不是BCNF,则Ri中必能找到一个函数依赖X→A,且X不是Ri 的候选码,且A不属于X,设Ri1(XA),Ri2(Ri-A),用分解{Ri1,Ri2}代替Ri,转②;④ 输出ρ例3:关系模式R<U,F>,其中:U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},将其分解成BCNF并保持无损连接。
解:① 令ρ={R(U,F)}。
② ρ中不是所有的模式都是BCNF,转入下一步。
③ 分解R:R上的候选关键字为HS(因为所有函数依赖的右边没有HS)。
考虑CS→G函数依赖不满足BCNF条件(因CS不包含候选键HS),将其分解成R1(CSG)、R2(CTHIS)。
计算R1和R2的最小函数依赖集分别为:F1={CS→G},F2={C→T,TH→I,HI→C,HS→I}。
分解R2:R2上的候选关键字为HS。
考虑C→T函数依赖不满足BCNF条件,将其分解成R21(CT)、R22(CHIS)。
计算R21和R22的最小函数依赖集分别为:F21={C→T},F22={CH→I,HI→C,HS→I}。
其中CH→I是由于R22中没有属性T且C→T,TH→I。
分解R22:R22上的候选关键字为HS。
考虑CH→I函数依赖不满足BCNF条件,将其分解成R221(CHI)、R222(CHS)。
计算R221和R222的最小函数依赖集分别为:F221={CH→I,HI→C},F222={HS→C}。
其中HS→C是由于R222中没有属性I且HS→I,HI→C。
由于R221上的候选关键字为H,而F221中的所有函数依赖满足BCNF条件。
由于R222上的候选关键字为HS,而F222中的所有函数依赖满足BCNF条件。
故R可以分解为无损连接性的BCNF如:ρ={R1(CSG),R21(CT),R221(CHI),R222(CHS)} 例4:关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。
解:① 令ρ={R(U,F)}。
② ρ中不是所有的模式都是BCNF,转入下一步。
③ 分解R:R上的候选关键字为BE(因为所有函数依赖的右边没有BE)。
考虑A→C函数依赖不满足BCNF条件(因A不包含候选键BE),将其分解成R1(AC)、R2(ABDE)。
计算R1和R2的最小函数依赖集分别为:F1={A→C},F2={B→D,DE→D,BE→A}。
其中B→D是由于R2中没有属性C且B→C,C→D;DE→D 是由于R2中没有属性C且DE→C,C→D;BE→A是由于R2中没有属性C且B→C,CE→A。
又由于DE→D是蕴含关系,可以去掉,故F2={B→D,BE→A}。
分解R2:R2上的候选关键字为BE。
考虑B→D函数依赖不满足BCNF条件,将其分解成R21(BD)、R22(ABE)。
计算R21和R22的最小函数依赖集分别为:F21={B→D},F22={BE→A}。