关系数据库的查询与优化.docx

上传人:b****4 文档编号:26958515 上传时间:2023-06-24 格式:DOCX 页数:42 大小:162.51KB
下载 相关 举报
关系数据库的查询与优化.docx_第1页
第1页 / 共42页
关系数据库的查询与优化.docx_第2页
第2页 / 共42页
关系数据库的查询与优化.docx_第3页
第3页 / 共42页
关系数据库的查询与优化.docx_第4页
第4页 / 共42页
关系数据库的查询与优化.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

关系数据库的查询与优化.docx

《关系数据库的查询与优化.docx》由会员分享,可在线阅读,更多相关《关系数据库的查询与优化.docx(42页珍藏版)》请在冰豆网上搜索。

关系数据库的查询与优化.docx

关系数据库的查询与优化

2.4 查询优化

关系系统和关系模型既密切相关,又是不相同的概念。

一般支持关系模型的DBMS称之

为关系系统,但是一个实际的关系数据库管理系统,不必苛求它完全支持关系模型,所以要

讨论关系系统的最小要求和分类。

对于一个给定的查询问题会有多种等价的实现办法,能否

找出一个与之等价而操作时间又少的表达式,换句话说,究竟哪一种方法是最优的?

这就是

查询优化要讨论的问题。

2.4.1 关系代数表达式的优化问题

查询处理:

是指从数据库中提取数据的一系列活动。

这一系列活动包括:

将高级数据库

语言表示的查询语句翻译成为能在文件系统这一物理层次上实现的表达式,为优化查询进

行各种转换,以及查询的实际执行。

查询处理的代价:

通常取决于磁盘的访问,磁盘的访问比内存访问速度要慢。

对于一个

给定的查询,可以有许多可能的处理策略,复杂查询更是如此。

就所需的磁盘访问次数而言,

策略好坏差别很大,有时甚至相差几个数量级。

所以,多花一点时间选择一个较好的查询策

略是很值得的。

查询优化:

是为了查询选择最有效的查询计划的过程。

查询优化一方面是在关系代数级

进行优化,要做的是力图找出与给定表达式等价,但执行效率更高的一个表达式。

查询优化

的另一方面涉及查询语句处理的详细策略的选择,例如选择执行运算所采用的具体算法,以

及将使用的特定索引,等等。

一个查询往往会有许多实现办法,关键是如何找出一个与之等价的且操作时间又少的

表达式。

下面将专门讨论这个问题。

2.4.2 关系代数表达式的等价变换规则

关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点。

第2章 关系数据库·43·

因为,用户只要提出“干什么”,不必指出“怎么干”。

在关系代数表达式中需要指出若干关系的操作步骤,问题是怎样做才能保证省时、省空

间、效率高,这就是查询优化的问题。

需要注意的是,在关系代数运算中,笛卡儿积、连接运算最费时间和空间,究竟应采用什

么样的策略,才能节省时间和空间?

这就是优化的准则。

1.优化的准则

(1)提早执行选取运算。

对于有选择运算的表达式,应优化成尽可能先执行选择运算的

等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数。

(2)合并乘积与其后的选择运算为连接运算。

在表达式中,当乘积运算后面是选择运算

时,应该合并为连接运算,使选择与乘积一道完成,以避免做完乘积后,需再扫描一个大的乘

积关系进行选择运算。

(3)将投影运算与其后的其他运算同时进行,以避免重复扫描关系。

(4)将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描

一遍关系。

(5)在执行连接前对关系适当地预处理,就能快速地找到要连接的元组。

方法有两种:

索引连接法、排序合并连接法。

(6)存储公共子表达式。

对于有公共子表达式的结果应存于外存(中间结果),这样,当

从外存读出它的时间比计算的时间少时,就可节约操作时间。

2.关系代数表达式的等价变换规则

优化的策略均涉及关系代数表达式,所以讨论关系代数表达式的等价变换规则显得十

分重要。

常用的等价变换规则有如下10种:

1)连接、笛卡儿积交换率

设E1和E2是关系代数表达式,F是连接运算的条件,则有

  E1×E2≡E2×E1

E1  E2≡E2  E1

FF

2)连接、笛卡儿积结合率

设E1,E2,E3是关系代数表达式,F1,F2是连接运算的条件,则有

  (E1×E2)×E3≡E1×(E2×E3)

  (E1  E2)  E3≡E1  (E2  E3)

F1F2F1F2

3)投影的串接定律

设E是关系代数表达式,A1,…,An和B1,…,Bm是属性名,且B1,…,Bm是A1,…,An的子

集。

则有

  πA1,…,An(πB1,…,Bm(E))≡πA1,…,An(E)

该规则的目的是使一些投影消失。

4)选择的串接定律

设E是关系代数表达式,F1,F2是选取条件表达式,选择的串接定律说明选择条件可以

合并,则有

  σF1(σF2(E))≡σF1∧F2(E)·44·数据库原理及应用

5)选择与投影的交换律

设E是关系代数表达式,F是选取条件表达式,并且只涉及A1,…,An属性,则有

  σF(πA1,…,An(E))≡πA1,…,An(σF(E))

若F中有不属于A1,…,An属性,B1,…,Bm,那么有更一般的规则:

  σF(πA1,…,An(E))≡πA1,…,An(σF(πA1,…,AnB1,…,Bm(E)))

该规则可将投影分裂为两个,使得其中的一个可能被移到树的叶端。

6)选择与笛卡儿积的交换律

若F涉及的都是E1中的属性,则

  σF(E1×E2)≡σF(E1)×E2

如果F=F1∧F2,并且,F1只涉及E1中的属性,F2只涉及E2中的属性,则有

  σF(E1×E2)≡σF1(E1)×σFE

22

7)选择与并的交换律

设E=E1∪E2,E1,E2有相同的属性,则

  σF(E1∪E2)≡σF(E1)∪σF(E2)

8)选择与差的交换律

设E1,E2有相同的属性,则

  σF(E1-E2)≡σF(E1)-σFE2

9)投影与笛卡儿积的交换律

设E1,E2是两个关系表达式,A1,…,An是E1中的属性,B1,…,Bm是E2中的属性,则

  πA1,…,An,B1,K,Bm(E1×E2)≡πA1,…,An(E1)×πB1,K,Bm(E2)

10)投影与并的交换律

设E1,E2有相同的属性,则

πA1,…,An(E1∪E2)≡πA1,…,An(E1)∪πA1,…,Am(E2)

2.4.3 关系代数表达式的优化算法

算法:

关系代数表达式的优化。

输入:

一个关系代数表达式的语法树。

输出:

计算该表达式的程序。

方法:

(1)利用规则4将形如σF1∧F2∧…Fn(E)变换为

  σF1(σF2KσFn(E))…)

(2)对每一个选择,利用规则4~8尽可能将它移到树的叶端。

(3)对每一个投影,利用规则3,5,9,10中的一般形式尽可能将它移到树的叶端。

(4)利用规则3~5将选择和投影的串接合并成单个选择、单个投影或一个选择后跟一

个投影。

使多个选择或投影能同时进行,或在一次扫描中全部完成。

(5)将上述得到的语法树的内节点分组。

每一双目运算(×,∪,  ,-)和它所有的直

接祖先为一组(这些直接祖先是σ,π运算)。

如果其后代直到叶子全部是单目运算,则将它

并入该组。

(6)生成一个程序,每组节点的计算是程序中的一步。

各步的顺序是任意的,只要保证第2章 关系数据库·45·

任何一组的计算不会在它的后代组之前计算。

【例2.12】 供应商数据库中有供应商、零件、项目、供应4个基本表(关系):

  S(Sno,Sname,Status,City)

P(Pno,Pname,Color,Weight)

J(Jno,Jname,City)

SPJ(Sno,Pno,Jno,Qty)

用户有一查询语句:

检索使用上海供应商生产的红色零件的工程号。

(1)试写出该查询的关系代数表达式。

(2)试写出查询优化的关系代数表达式。

(3)画出该查询初始的关系代数表达式的语法树。

(4)使用优化算法,对语法树进行优化,并画出优化后的语法树。

解:

(1)该查询的关系代数表达式如下:

  πJno(σCtiy=上海∧Color=红(S  SPJ  P))

(2)查询优化的关系代数表达式如下:

  πJno(πSno(σCtiy=上海(S))  πSno,Pno,Jno(SPJ)  Jopno(σColor=红(P)))

(3)画出该查询初始的关系代数表达式的语法树如图2-21所示。

(4)使用优化算法,对语法树进行优化,并画出优化后的语法树如图2-22所示。

 图2-21 优化前图2-22 优化后  

2.5 关系数据库的规范化理论

在关系模型中,一个数据库模式是关系模式的集合。

要保证构造的关系既能准确地反应

现实世界,又有利于应用和具体的操作。

规范化理论研究的是关系模式中各属性之间的依赖

关系及其对关系模式性能的影响,提供判断关系模式优劣的理论标准,预测可能出现的问

题,提供了自动产生各种模式的算法。

因此,它是设计人员的有力工具和理论基础。

关系数据

库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连

接和保持函数依赖性。

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以·46·数据库原理及应用

减少系统中信息存储的冗余度,但又可方便地获取信息。

2.5.1 函数依赖

数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现

实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。

函数依赖则是一种最

重要、最基本的数据依赖。

1.函数依赖的定义

【定义2.4】 设R(U)是属性集U上的关系模式,X,Y是U的子集。

若对R(U)的任何

一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,

则称X函数决定Y或Y函数依赖于X,记作:

X→Y。

注意:

函数依赖X→Y的定义要求关系模式R的任何可能的r都满足上述条件。

因此不

能仅考察关系模式R在某一时刻的关系r,就断定某函数依赖成立。

例如,关系模式Student(Sno,Sname,SD,Sage,Sex)可能在某一时刻,Student的关系r

中每个学生的年龄都不同,也就是说没有两个元组在Sage属性上取值相同,而在Sno属性上

取值不同,但我们决不可据此就断定Sage→Sno。

很有可能在某一时刻,Student的关系r中

有两个元组在Sage属性上取值相同,而在Sno属性上取值不同。

函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。

例如,在没有同名的

情况下,Sname→Sage,而在有同名的情况下,这个函数依赖就不成立了。

非平凡的函数依赖:

如果X→Y,但Y X,则称X→Y是非平凡的函数依赖。

一般情况

下总是讨论非平凡的函数依赖。

平凡的函数依赖:

如果X→Y,但Y X,则称X→Y是平凡的函数依赖。

【定义2.5】 在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′不能

决定Y,则称Y对X完全函数依赖,记做:

XY。

如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记做:

XY。

部分

函数依赖也称局部函数依赖。

【定义2.6】 在R(U,F)中,如果X→Y,Y X,Y→/X,Y→Z,则称Z对X传递函数

依赖。

【例2.13】 在关系模式SC(Sno,Cno,Grade,Credit)中,

  f

(Sno,Cno)Grade    成绩完全函数依赖于学号和课程号

  Cno→Credit学分函数依赖于课程号

  p

(Sno,Cno)Credit学分部分函数依赖于学号

在关系模式Student(Sno,Sname,SD,SDname,Sage,Sex)中,

  Sno→Sname,Sno→Sage

又因为Sno→SD,SD→/Sno,SD→SDname,所以可以得出Sno→SDname,即系名传递

依赖于学号。

2.码

【定义2.7】 设K为R(U,F)中的属性或属性的组合,若KU,且对于K的任何一第2章 关系数据库·47·

个真子集K,都有K不能决定U,则K为R的候选码(Candidatekey),若有多个候选码,则选

一个作为主码(Primarykey)。

候选码通常也称候选关键字。

包含在任何一个候选码中的属性叫做主属性(Primeattribute),否则叫做非主属性

(Nonprimeattribute)。

【例2.14】 关系模式CSZ(CITY,ST,ZIP),其属性组上的函数依赖集为

  F={(CITY,ST)→ZIP,ZIP→CITY}

即城市、街道决定邮政编码,邮政编码决定城市。

容易看出,(CITY,ST)和(ST,ZIP)是

两个候选码。

CITY,ST,ZIP都是主属性。

【定义2.8】 若R(U,F)中的属性或属性组X非R的码,但X是另一个关系的码,则称

X是R的外码(Foreignkey)。

【定义2.9】 若关系模式R(U)中,X,Y,Z是U的子集,并且Z=U-X-Y。

当且仅当

对R(U)的任何一个关系r,给定一对(X,Z)值,有一组Y的值,这组值仅仅决定于X值而与

Z值无关,则称“Y多值依赖于X”或“X多值决定Y”成立。

记为X→→Y。

多值依赖具有如下6条性质:

(1)多值依赖具有对称性。

即若X→→Y,则X→→Z,其中Z=U-X-Y。

(2)多值依赖的传递性。

即若X→→Y,Y→→Z,则X→→Z-Y。

(3)函数依赖可以看成是多值依赖的特殊情况。

(4)若X→→Y,X→→Z,则X→→YZ。

(5)若X→→Y,X→→Z,则X→→YZ。

(6)若X→→Y,X→→Z,则X→→Z-Y。

3.逻辑蕴涵与Armstrong公理系统

【定义2.10】 设R(U,F)是一个关系模式,X,Y是U中的属性组,若在R(U,F)的任

何一个满足F中函数依赖的关系r上,都有函数依赖X→Y成立,则称F逻辑蕴含X→Y。

在关系模式R(U,F)中为F所逻辑蕴含的函数依赖的全体称做F闭包,记做F+。

例如,关系模式Student(Sno,Sname,Age,SD,SDname),其属性组上的函数依赖集为F

={Sno→Sname,Sno→Sage,Sno→SD,SD→SDname},Sno→SDname就是F所逻辑蕴

含的一个函数依赖。

函数依赖的公理系统(Armstrong公理系统):

设关系模式R(U,F),其中U为属性集,F

是U上的一组函数依赖,那么有如下推理规则:

A1自反律:

若Y X U,则X→Y为F所蕴涵。

A2增广律:

若X→Y为F所蕴涵,且Z U,则XZ→YZ为F所蕴涵。

A3传递律:

若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵。

注意:

由自反律所得到的函数依赖均是平凡的函数依赖,事实上自反律的应用只依赖于

U,不依赖于F。

【例2.15】 利用Armstrong公理系统的推理规则,对于【例2.14】的关系模式CSZ的

已知条件,证明(ST,ZIP)→(CITY,ST,ZIP)。

证明:

根据题意不难看出只要证明(ST,ZIP)是—个候选码即可,证明步骤如下:

因为ZIP→CITY          (F中已给出)

所以(ST,ZIP)→(CITY,ST)(利用增广率,即在函数依赖的两端加ST)·48·数据库原理及应用

(ST,ZIP)→(CITY,ST,ZIP)(用增广率,加ZIP)

严格地说,要证明(ST,ZIP)是候选码,还需要说明ST→(CITY,ST,ZIP)和ZIP→

(CITY,ST,ZIP)都不在F+中。

Armstrong公理系统是正确的、完备的,即由F出发根据推理规则推导出的函数依赖一

定为F所逻辑蕴涵。

而且所逻辑蕴涵的每一个函数依赖必定可以由F出发根据推理规则推

导出来。

根据上述3条推理规则又可推出下述3条推理规则:

A4合并规则:

若X→Y,X→Z,则X→YZ为F所蕴涵。

A5伪传递率:

若X→Y,WY→Z,则XW→Z为F所蕴涵。

A6分解规则:

若X→Y,Z Y,则X→Z为F所蕴涵。

引理:

X→A1A2…Ak成立的充分必要的条件是X→Ai成立(i=1,2,3,…,k)。

证明略。

4.属性集的闭包X+

【定义2.11】 设F为属性集U上的一组函数依赖,X U,X+

F={A|X→A能由F根

据Armstrong公理导出},则称X+

F为属性集X关于函数依赖集F的闭包。

算法:

求属性的闭包X++

F。

输入:

X,F。

输出:

XF。

步骤:

(1)令X(0)=X,I=0。

(2)求B,B={A|( v)( w)(V→W∈F∧V X(i)∧A∈W)}。

(3)Xi+1=BYX(i)。

(4)判断X(i+1)=X(i)。

(5)若相等,或X(i)=U,则X(i)为属性集X关于函数依赖集F的闭包,且算法终止。

(6)若不相等,则i=i+1,返回(2)。

【例2.16】 已知关系模式R(U,F),U={A,B,C,D,E},F={A→B,D→C,BC→E,

AC→B},求(AE)++

F、(AD)F。

解:

(1)求(AE)+(0)

F,根据上述算法,设X=AE,

计算X(1)。

逐一扫描F中的各个函数依赖,找到左部为A、E或AE的函数依赖,找到一个

A→B。

故有X(1)=AEYB。

计算X(2)。

逐一扫描F中的各个函数依赖,找到左部为ABE或ABE子集的函数依赖,因

为找不到这样的函数依赖,所以,X(1)=X(2)。

算法终止,(AE)+

F=ABE。

(2)求(AD)+(0)

F,由上述算法,设X=AD,

计算X(1)。

逐一扫描F中的各个函数依赖,找到左部为A、D或AD的函数依赖,找到两个

A→B,D→C函数依赖。

故有X(1)=ADYBC。

计算X(2)。

逐一扫描F中的各个函数依赖,找到左部为ADBC或ADBC子集的函数依赖,

得到两个BC→E,AC→B函数依赖。

故有X(2)=ABCDYE。

因为X(2)=ABCDE=U,所以

算法终止,(AD)+

F=ABCDE。

5.最小函数依赖集

【定义2.12】 一个关系模式R(U,F)上的两个依赖集F和G,如果F+=G+,则称F和

G是等价的,记做F≡G。

第2章 关系数据库·49·

若F≡G,则称G是F的一个覆盖,反之亦然。

两个等价的函数依赖集在表达能力上是完

全相同的。

【定义2.13】 如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖:

(1)F中的任何一个函数依赖的右部仅含有一个属性。

(2)F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价。

(3)F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}{Z→A}与

F等价。

算法:

计算最小函数依赖集。

输入:

一个函数依赖集。

输出:

F的一个等价的最小函数依赖集G。

步骤:

(1)用分解的规则,使F中的任何一个函数依赖的右部仅含有一个属性。

(2)去掉多余的函数依赖。

逐一检查F中的各函数依赖X→Y,并将X→Y从F中去掉,

然后在剩下的函数依赖集F中求属性X的闭包X++

F,看XF是否包含Y,若是,则去掉X→Y,

否则不能去掉。

依次做下去,直到找不到冗余的函数依赖。

(3)去掉各依赖左部多余的属性。

一个一个地检查函数依赖左部非单个属性的依赖。

如XY→A,若要判Y为多余的,则以X→A代替XY→A,并判断是否等价。

若A∈X+

F,则Y

是多余属性,可以去掉。

【例2.17】 已知关系模式R(U,F),U={A,B,C,D,E,G},F={AB→C,D→EG,C

→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG},请将F化为最小函数依赖集。

解:

(1)利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得

F={AB→C,D→E,D→G,C→A,BE→C,BC→D,

CG→B,CG→D,ACD→B,CE→A,CE→G}

(2)去掉F中多余的函数依赖,具体做法是,从第一个函数依赖开始将它(假定它为AB

→C)从F中去掉,剩下的函数依赖F1求(AB)++

F1的闭包,看(AB)F1是否含C,若包含C,则

AB→C为冗余函数依赖,则去掉它,否则不去。

依此类推,直到能满足定义最小依赖的第二

个条件。

故有:

①设AB→C为冗余的函数依赖,则先去掉F中的AB→C,得

F1={D→E,D→G,C→A,BE→C,BC→D,CG→B,

CG→D,ACD→B,CE→A,CE→G}

因为从F1中找不到左部为AB或AB子集的函数依赖,所以(AB)+

F1=AB。

又因为

C□(AB)+

F1,所以AB→C非冗余的函数依赖,不能去掉。

②设CG→B为冗余的函数依赖,则去掉F中的CG→B,得

F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,

CG→D,ACD→B,CE→A,CE→G}

求(CG)+

F2。

设X(0)=CG,

计算X(1)。

逐一扫描F2中的各个函数依赖,找到左部为C、G或CG的函数依赖,得到一

个C→A函数依赖。

故有X(1)=CGA。

计算X(2)。

逐一扫描F2中的各个函数依赖,找到左部为CGA或CGA子集的函数依赖,得·50·数据库原理及应用

到一个CG→D函数依赖。

故有X(2)=ACDG。

计算X(3)。

逐一扫描F2中的各个函数依赖,找到左部为ACDG或ACDG子集的函数依

赖,得到两个ACD→B,D→E函数依赖。

故有X(3)=ABCDEG。

因为X(3)=ABCDEG=U,算法终止,(CG)+

F2=ABCDEG。

所以CG→B为冗余的函数依赖,应从F中去掉。

③因为CG→B已从F中去掉,所以应扫描F2,对F2中设CG→D为冗余的函数依赖,

则去掉F2中的CG→D,得

F3={AB→C,D→E,D→G,C→A,BE→C,BC→D,ACD→B,CE→A,CE→G}

求(CG)+

F3。

设X(0)=CG,

计算X(1)。

逐一扫描F3中的各个函数依赖,找到左部为C、G或CG的函数依赖,得到一

个C→A函数依赖。

故有X(1)=ACG。

计算X(2)。

逐一扫描F3中的各个函数依赖,找到左部为ACG或ACG子集的函数依赖,因

为找不到这样的函数依赖。

故有X(2)=X(1),算法终止。

(CG)+

F3=ACG。

因为ACGD D,所以CG→D非冗余的函数依赖,不能从F3中去掉。

④继续扫描F2,设CE→A为冗余的函数依赖,则去掉CE→A,得

F4={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→G}

求(CE)+

F4。

设X(0)=CE,

计算X(1)。

逐一扫描F4中的各个函数依赖,找到左部为C、E或CE的函数依赖,得到一

个C→A函数依赖。

故有X(1)=ACE。

计算X(2)。

逐一扫描F4中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,得

到一个CE→G函数依赖。

故有X(2)=ACEG。

计算X(3)。

逐一扫描F4中的各个函数依赖,找到左部为ACEG或ACEG子集的函数依

赖,得到一个CG→D函数依赖。

故有X(3)=ACDEG。

计算X(4)。

逐一扫描F4中的各个函数依赖,找到左部为ACDEG或ACDEG子集的函数依

赖,得到一个ACD→B函数依赖。

故有X(4)=ABCDEG。

因为X(4)=ABCDEG=U,算法终止,(CE)+

F4=ABCDEG。

所以CE→A为冗余的函数依赖,从F4中去掉。

可以逐一判断在F4中已无多余函数依赖所以转(3)。

(3)去掉F4中各函数依赖左边多余的属性。

函数依赖ACD→B,属性A是多余的,去掉A得CD→B,因为C→A,CD→B,所以可推

导出ACD→B。

故最小函数依赖集为

FMIN={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G}

6.候选关键字的求解方法

给定一个关系模式R(U,F),U={A1,A2,…,An},F是R的函数依赖集,那么,可以将属

性分为如下4类:

第2章 关系数据库·51·

L:

仅出现在函数依赖集F左部的属性;

R:

仅出现在函数依赖集F右部的属性;

LR:

在函数依赖集F左右部都出现的属性;

NLR:

在函数依赖集F左右部都未出现的属性。

根据候选码的特性可以得出如下结论:

(1)给定一个关

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1