[总结]关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式、……)

数据库求候选码的算法 【例1】关系模型R<U,F>,U={A,B,C,D},F={B→D,AB→C},求R候选码。 在求解之前先要明白一些定理。我们把函数依赖集中F中的属性分为四类: L类:所有依赖关系中仅出现在函数依赖左部的属性。 R类:所有依赖关系中仅出现在函数依赖右部的属性。 LR类:所有依赖关系中即出现在函数依赖左部又出现在函数依赖右部的属性。 N类:所有依赖关系中没有出现的属性。 定... 阅读详情

联系(Relationship)
1:1联系:如果实体集E1中的每个实体最多只能和实体集E2中一个实体有联系,反之亦然,那么实体集E1对E2的联系成为一对一联系,记为1:1;
1:N联系:一对多,记为1:N;
M:N联系:多对多联系,记为M:N。

http://zh.wikipedia.org/wiki/%E5%85%B3%E7%B3%BB%E4%BB%A3%E6%95%B0_(%E6%95%B0%E6%8D%AE%E5%BA%93)

函数依赖(Function Dependency)

定义
设关系模式R(U),属性集合U={A1,A2,…,An},X,Y为属性集合U的子集,如果对于关系模式R(U)的任一可能的关系r,r中的任意两个元组u、v,若有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X。用符号X→Y表示。其中X为决定因素,Y为被决定因素。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值性等,而在Y上的属性值不等。
 (1) 函数依赖是语义范畴的概念,只能根据语义来确定一个函数依赖关系。
 (2) 函数依赖X→Y的定义要求关系模式R的任何可能的关系r中的元组都满足函数依赖条件。
术语
 (1)若X→Y,则X称作决定因素(Determinant)
 (2)若X→Y,Y→X,称作X<->Y。
 (3)若Y不函数依赖于X,称作X -/-> Y。
 (4)X→Y,若Y不包含X,则称X→Y为非平凡的函数依赖。正常讨论的都是非平凡的函数依赖。
 (5)X→Y,若Y包含X,则称X→Y为平凡的函数依赖。
 (6)完全函数依赖(full functional dependency):在R(U)中,设X、Y是关系模式R(U)中不同的属性子集,若存在 X→Y,且不存在 X的任何真子集X',使得 X'→Y,则称Y完全函数依赖 ( full functional dependency ) 于X。记作 X-F->Y。

 (7)部分函数依赖:在关系模式R(U)中,X、Y是关系模式R(U)中不同的属性子集,若X→Y成立,如果X中存在任何真子集X',而且有X'→Y也成立,则称Y对X是部分函数依赖,记作:X-P->Y。

 (8)设R是关系模式,U是其属性集,K包含于U。若K完全函数确定U,则称K是R的候选键(又叫候选关键字,候选码)。包含在任意候选键内的属性称为键属性(又叫主属性),不是键属性的属性称为非键属性(又叫非主属性)。显然,候选键可以唯一标识关系的元组。候选键可能不唯一,通常指定一个候选键作为识别元组的主键。

候选键的严格定义: 关系模式R(U)的属性集合K ∈U的候选键,如果

(1)R(U)的任何一个关系实例的任意两个元素在属性集合K上的值部不相同————唯一性
(2)K的任何真子集都不满足条件 ————最小性
通俗点,候选键在每一行数据里的值都不相同,就像自动增长的id一样,可以说成是候选的主键。

码(键)是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,它是整个实体集的性质,而不是单个实体的性质。
它包括超码,候选码,主码。

超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键(又叫超码),超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。超码的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。
候选键(candidate key):不含有多余属性的超键称为候选键(又叫候选码)。候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以
候选码是最小超码,它们的任意真子集都不能成为超码。
主键(primary key):用户选作元组标识的一个候选键程序主键(又叫主码)

一题搞懂什么是候选键

学号

姓名性别年龄系别

专业

20020612李辉男20计算机软件开发
20020613张明男19计算机软件开发
20020614王小玉女18物理力学
20020615李淑华女17生物动物学
20020616赵静男21化学食品化学
20020617赵静女20生物植物学

【题目】数据库中有一个学生信息表如上所示,在该表中不能作为候选键的属性集合为( ) (选择一项)

a){学号}              b){学号、姓名}            c){年龄、系别}            d){姓名、性别}            e){姓名、专业}

【解析】透过概念,我们可以了解到,超键包含着候选键,候选键中包含着主键。主键一定是惟一的。为什么呢?因为他的爷爷超键就是惟一的。
我们分析一下上面的题目,a,b,c,d,e,5个答案都可以作为超键,他们组合在一起的集合可以用来惟一的标识一条数据记录(实体)。
请注意我们的要求:候选键。候选键要求是不能包含多余属性的超键,我们看一下答案b。在答案b中,如果我们不使用姓名也可以惟一的
标识一条数据实体,可以说姓名字段在这里是多余的。那么很明显,b选项包含了多余字段属性。那么这题答案应该选择b。

那么其他的4个选项都可以作为候选键,假设很幸运,a){学号}被选择作为用户正在使用的候选键来惟一标识元组了,那么他很幸运的获得了主键的称号

【答案】b

 (9)若关系R的属性子集X是另一关系S的候选键,则称X是R关于S的外部键。主键和外部键描述了关系之间的联系。
 (10)传递函数依赖:在关系模式R(U) 中,如果Y→X,X→A,且XY(X不决定Y), AX(A不属于X),那么称Y→A是传递依赖。

函数依赖的推理规则

1. 逻辑蕴含
  给定一个关系模式,只考虑给定的函数依赖是不够的,必须找出在该关系模式上成立的其他函数依赖。
  逻辑蕴含:设F是关系模式R(U)的函数依赖集合,由F出发,可以证明其他某些函数依赖也成立,我们称这些函数依赖被F逻辑蕴含。"F蕴含X→Y"意味着关系实例只要满足F就满足X→Y。
  例如,设F={ A→B,B→C },则函数依赖A→C被F逻辑蕴含,记作:F |= A→C。即函数依赖集 F 逻辑蕴含函数依赖A→C。
2. F的闭包F+
  对于一个关系模式,如何由已知的函数依赖集合F,找出F逻辑蕴涵的所有函数依赖集合呢?这就是我们下面要讨论的问题。
  F的闭包F+:设F为一个函数依赖集,F的闭包是指F逻辑蕴涵的所有函数依赖集合。 F的闭包记作F+。
  例如,给定关系模式R(A,B,C,G,H,I),函数依赖集合F={A→B,A→C,CG→H,CG→I,B→H}。可以证明函数依赖A→H被F逻辑蕴涵。
  设有元组s和t,满足s[A]=t[A],根据函数依赖的定义,由已知的A→B,可以推出s[B]=t[B]。又根据函数依赖B→H,可以有s[H]=t[H]。因此,已经证明对任意的两个元组s和t,只要有s[A]=t[A],就有s[H]=t[H]。所以,函数依赖A→H被F逻辑蕴涵。
  计算F的闭包F+,可以由函数依赖的定义直接计算,如上面的示例。但是,当F很大时,计算的过程会很长。为了从已知的函数依赖推导出其它函数依赖,Armstrong 提出了一套推理规则,称为Armstrong 公理 ,通过反复使用这些规则,可以找出给定F的闭包F+。其推理规则可归结为如下3条:自反律(reflexivity)、增广律(augmentation)和 传递律(transitivity)。

3.Armstrong 公理
  设U为属性总体集合,F为U上的一组函数依赖,对于关系模式R(U,F),X、Y、Z为属性U的子集,有下列推理规则:
   A1:自反律(reflexivity)     若Y X U,则X→Y为F所蕴函。
   A2:增广律(augmentation)  若X→Y为F所蕴函,且Z是U的子集,则XZ→YZ为F所蕴函。式中XZ和YZ是X∪Z 和 Y∪Z的简写。
   A3:传递律(transitivity)  若X→Y、Y→Z为F所蕴函,则X→Z为F所蕴函。
  由自反律所得到的函数依赖都是平凡的函数依赖,自反律的使用并不依赖于F,而只依赖于属性集U。
  Armstrong公理是有效的和完备的。可以利用该公理系统推导F的闭包F+。由于利用Armstrong公理直接计算F+很麻烦。根据A1, A2, A3这三条推理规则还可以得到其他规则,用于简化计算F+的工作。如下面扩展的三条推理规则:
  *合并规则: 由X→Y, X→Z, 有X→YZ
  *伪传递规则: 由X→Y, WY→Z, 有XW→Z
  *分解规则: 由X→YZ, 则有X→Z,X→Y
  Armstrong公理可以有多种表示形式,例如,增广律A2可以用合并规则代替。例如,用自反律A1,传递律A3和合并规则可推导出增广律A2。
  证明:XZ →X (A1:自反律)   X →Y (给定条件)   XZ →Y (A3:传递律)  XZ →Z (A1:自反律)  XZ →YZ (合并规则)
4.属性集的闭包

  原则上讲,对于一个关系模式R(U,F),根据已知的函数依赖F,反复使用前面的规则,可以计算函数依赖集合F的闭包F+。但是,利用推理规则求出其全部的函数依赖F+是非常困难的,而且也没有必要。因此,可以计算闭包的子集,即选择一个属性子集,判断该属性子集能函数决定哪些属性,这就是利用属性集闭包的概念。
 (1)属性集闭包的定义
  设F为属性集U上的函数依赖集,X∈U,即X为U的一个子集。在函数依赖集F下被X函数决定的所有属性为F+下属性集X的闭包,记作X+。即X+={ A| X→A } 。
 (2)计算属性集闭包X+的算法如下:
  输入:X,F
  输出: X+
 迭代算法的步骤:
  ① 选取X+的初始值为X ,即X+={X};
  ② 计算X+, X+={X,Z} ,其中Z要满足如下条件:
Y是X+的真子集,且F中存在一函数依赖Y→Z。实际上就是以X+中的属性子集作为函数依赖的决定因素,在F中搜索函数依赖集,找到函数依赖的被决定属性Z放到X+中。
  ③ 判断:如果X+没有变化?或X+等于U?则X+就是所求的结果,算法终止。否则转②。
 因为U是有穷的,所以上述迭代过程经过有限步骤之后就会终止。


 例如,已知关系模式R(U,F),U={A,B,C,D,E,G},F={AB→C,D→EG,C→A,BE→C,BC→D,AC→B,CE→AG},求(BD)+
   解:
   ① (BD)+ = {BD};
   ② 计算(BD)+ ,在F中扫描函数依赖,其左边为B,D或BD的函数依赖,得到一个D→EG。所以,(BD)+= {BDEG}。
   ③ 计算(BD)+,在F中查找左部为BDEG的所有函数依赖,有两个:D→EG和BE→C。所以(BD)+={(BD)∪EGC}={BCDEG}。
   ④ 计算(BD)+,在F中查找左部为BCDEG子集的函数依赖,除去已经找过的以外,还有三个新的函数依赖:C→A,BC→D,CE→AG。得到(BD)+={(BD)∪ADG}={ABCDEG}。
   ⑤ 判断(BD)+=U,算法结束。得到(BD)+={ABCDEG}。
  说明:上面说明(B,D)是该关系模式的一个候选码。


5. Armstrong公理系统的有效性和完备性
  ①Armstrong公理系统的有效性指的是:由F出发根据Armstrong公理系统推导出来的每一个函数依赖一定是F所逻辑蕴含的函数依赖。
  ②Armstrong公理系统的完备性指的是:对于F所逻辑蕴含的每一函数依赖,必定可以由F出发根据Armstrong公理系统推导出来。

6. 极小函数依赖集(最小函数依赖集)

定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。   
   ① F中的任何一个函数依赖的右部仅含有一个属性;   
   ② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
   ③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。   
求最小函数依赖集分三步:
   1.将F中的所有依赖右边化为单一元素
   此题fd={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足
 
   2.去掉F中的所有依赖左边的冗余属性.
   作法是属性中去掉其中的一个,看看是否依然可以推导
   此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性
   ab->g,也没有
   cj->i,因为c+={c,j,i}其中包含i所以j是冗余的.cj->i将成为c->i
   F={abd->e,ab->g,b->f,c->j,c->i,g->h};

   3.去掉F中所有冗余依赖关系.
   做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.

  此题如果F去掉abd->e,F将等于{ab->g,b->f,c->j,c->i,g->h},而(abd)+={a,d,b,f,g,h},其中不包含e.所有不是多余的.

   同理(ab)+={a,b,f}也不包含g,故不是多余的.
   b+={b}不多余,c+={c,i}不多余
   c->i,g->h多不能去掉.
   所以所求最小函数依赖集为 F={abd->e,ab->g,b->f,c->j,c->i,g->h};

多值依赖

1、定义

设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。

若X→→Y,而Z=,则称X→→Y为平凡的多值依赖。否则称X→→Y为非平凡的多值依赖。

多值依赖也可以形式化地定义如下: 在关系模式R(U)的任一关系r中,如果对于任意两个元组t,s,有t[X]=s[X],就必存在元组w,v∈r(w和v可以与s和t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=t[Z],即交换s,t元组的Y值所得的两个新元组必在r中,则称Y多值依赖于X,记为X→→Y。其中,X和Y是U的子集,Z=U-X-Y。

多值依赖属4nf的定义范围,比函数依赖要复杂得多,很多书上都没有讲清楚。

2、说得简单点就是

在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。例如,教师和学生之间没有直接联系,但教师和学生可通过系名,或任课把教师和学生联系起来。

3、举例如下

【例1】有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个一个产品只能放到一个仓库中,但是一个仓库可以由若干管理员,那么对应于一个 <仓库管理员,库存产品〉有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。

【例2】(C,B)上的一个值(物理,光学原理)对应一组T值(李平,王强,刘明),这组值仅仅决定于课程C上的值,也就是说对于(C,B)上的另一个值(物理,普通物理学),它对应的一组T值仍是(李平,王强,刘明),尽管这时参考书B的值已经改变了。因此T多值依赖于C,即C→→T。

4、多值依赖具有下列性质

●多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。

●多值依赖具有传递性。即若X→→Y,Y→→Z,则X→→Z-Y。

●函数依赖可以看作是多值依赖的特殊情况。

●若X→→Y,X→→Z,则X→→YZ。

●若X→→Y,X→→Z,则X→→Y∩Z。

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

●多值依赖的有效性与属性集的范围有关。

●若多值依赖X→→Y在R(U)上成立,对于Y'Y,并不一定有X→→Y’成立。但是如果函数依赖X→Y在R上成立,则对于任何Y'Y均有X→Y’成立。

范式

• 如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。【无重复的列】

缺点:数据冗余,删除异常,插入异常,修改复杂
• 如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称为第二范式模式。【消去非主属性对键的部分函数依赖】
缺点:删除异常,插入异常,修改复杂
• 如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R为第三范式模式。【消去非主属性对键的部分和传递函数依赖】
• 若关系模式R是第一范式,且每个属性都不传递依赖于R的候选键。这种关系模式就是BCNF模式。【消去主属性对键的部分和传递函数依赖】

若R上的多值依赖集合D中成立非平凡多值依赖X→→Y时,X必是R的超键,则R∈4NF。

由BCNF的定义可以得到以下结论,一个满足BCNF的关系模式有:
所有非主属性对每一个码都是完全函数依赖。
所有的主属性对每一个不包含它的码,也是完全函数依赖。
没有任何属性完全函数依赖子非码的任何一组属性。
由于R∈BCNF,按定义排除了任何属性对码的传递依赖与部分依赖;所以R∈3NF。

• 若关系模式R是第一范式,且对于R的每个非平凡多值依赖X→→Y(YX),X都含有码,则称R∈4NF。【消除非平凡且非函数依赖的多值依赖】

4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根据定义,对于每一个非平凡的多值依赖X→→Y,X都含有候选码,于是就有X→Y,所以4NF所允许的非平凡的多值依赖实际上是函数依赖。

•设R,R1,R2,...,Rn是关系模式,U,U1,U2,...,Un分别是R,R1,R2,...,Rn的属性集合,而且U=U1∪U2∪...∪Un。如果R的任意关系实例r满足:

r=πR1(r) ⋈ πR2(r) ⋈ ...  ⋈ πRn(r),则称R满足联结依赖,记作⋈(R1,R2,...,Rn)

R中除了超建构成的联结依赖外,没有其他联结依赖存在,称R为5NF。

http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A7%84%E8%8C%83%E5%8C%96

判断无损连接和函数依赖

大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。

以下的论述都基于这样一个前提:
R是具有函数依赖集F的关系模式,(R1 ,R2)是R的一个分解。

首先我们给出一个看似无关却非常重要的概念:属性集的闭包。
令α为一属性集。我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包,记为α+ 。
下面给出一个计算α+的算法,该算法的输入是函数依赖集F和属性集α,输出存储在变量result中。
算法一:
result:=α;
while(result发生变化)do
    for each 函数依赖β→γ in F do
    begin
        if β∈result then result:=result∪γ;
    end

属性集闭包的计算有以下两个常用用途:
·判断α是否为超码,通过计算α+(α在F下的闭包),看α+ 是否包含了R中的所有属性。若是,则α为R的超码。
·通过检验是否β∈α+,来验证函数依赖是否成立。也就是说,用属性闭包计算α+,看它是否包含β。

(请原谅我用∈符号来表示两个集合之间的包含关系,那个表示包含的符号我找不到,大家知道是什么意思就行了。)

看一个例子吧,2005年11月系分上午37题:

● 给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候选关键字为________。
(37)A. A1  B. A1A3  C. A1A3A4  D. A1A2A3

首先我们按照上面的算法计算A1+ 。
result=A1,
由于A1→A2,A1∈result,所以result=result∪A2=A1A2
由于A2→A3,A2∈result,所以result=result∪A3=A1A2A3
由于A2→A4,A2∈result,所以result=result∪A3=A1A2A3A4
由于A3→A2,A3∈result,所以result=result∪A2=A1A2A3A4

通过计算我们看到,A1+ =result={A1A2A3A4},所以A1是R的超码,理所当然是R的候选关键字。此题选A 。


好了,有了前面的铺垫,我们进入正题。

无损分解的判断。
如果R1∩R2是R1或R2的超码,则R上的分解(R1,R2)是无损分解。这是一个充分条件,当所有的约束都是函数依赖时它才是必要条件(例如多值依赖就是一种非函数依赖的约束),不过这已经足够了。

保持依赖的判断。
如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。
如果上述判断失败,并不能断言分解不是保持依赖的,还要使用下面的通用方法来做进一步判断。
该方法的表述如下:
算法二:
对F上的每一个α→β使用下面的过程:
result:=α;
while(result发生变化)do
    for each 分解后的Ri
        t=(result∩Ri)+ ∩Ri
        result=result∪t

这里的属性闭包是在函数依赖集F下计算出来的。如果result中包含了β的所有属性,则函数依赖α→β。分解是保持依赖的当且仅当上述过程中F的所有依赖都被保持。


下面给出一个例题,2006年5月系分上午43题:

●设关系模式R<U, F>,其中U={A, B, C, D, E},F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}满足 (43) 。
(43) A.具有无损连接性、保持函数依赖
              B.不具有无损连接性、保持函数依赖
              C.具有无损连接性、不保持函数依赖
              D.不具有无损连接性、不保持函数依赖

先做无损链接的判断。R1∩R2={C},计算C+。
Result=C
由于C→D,C∈result,所以result=result∪D=CD
可见C是R2的超码,该分解是一个无损分解。

再做保持依赖的判断。
A→BC,BC→E, E→A都在R1上成立(也就是说每一个函数依赖左右两边的属性都在R1中),C→D在R2上成立,因此给分解是保持依赖的。

选A。


再看一个复杂点的例题。2007年5月数工40-41题。

●给定关系模式R<U, F>,U={A, B, C, D, E},F={B→A,D→A,A→E,AC→B},其候选关键字为
(40) ,则分解ρ={R1(ABCE),R2(CD)}满足 (41) 。
(40) A.ABD
              B.ABE
              C.ACD
              D.CD
(41) A.具有无损连接性、保持函数依赖
              B.不具有无损连接性、保持函数依赖
              C.具有无损连接性、不保持函数依赖
              D.不具有无损连接性、不保持函数依赖

看见了吧,和前面一题多么的相像!
对于第一问,分别计算ABCD四个选项的闭包,
(ABD)+ = { ABDE }
(ABE)+ = { ABE }
(ACD)+ = { ABCDE }
(CD)+ = { ABCDE }
选D。

再看第二问。
先做无损链接的判断。R1∩R2={C},计算C+。
result=C
因此C既不是R1也不是R2的超码,该分解不具有无损分解性。

再做保持依赖的判断。
B→A,A→E,AC→B在R1上成立,D→A在R1和R2上都不成立,因此需做进一步判断。
由于B→A,A→E,AC→B都是被保持的(因为它们的元素都在R1中),因此我们要判断的是D→A是不是也被保持。

对于D→A应用算法二:
result=D
对R1,result∩R1=ф(空集,找不到空集的符号,就用这个表示吧),t=ф,result=D
再对R2,result∩R2=D,D+ =ADE ,t=D+ ∩R2=D,result=D
一个循环后result未发生变化,因此最后result=D,并未包含A,所以D→A未被保持,该分解不是保持依赖的。

选D。
【数据库】— 无损连接、Chase算法、保持函数依赖 无损连接和保持函数依赖是关系数据库设计中的两个重要概念。 无损连接指的是在关系模式分解过程中,如果原始关系模式中存在某些函数依赖关系,那么这些函数依赖关系应该在分解后的新关系模式中仍然能够被保持。也就是说,无论是在原始的关系模式中还是在分解后的新关系模式中,都应该能够通过关联操作(join)来获取与原始关系模式相同的信息。 保持函数依赖指的是在关系模式分解过程中,如果原始关系模式中存在某些函数依赖关系,那么这些函数依赖关系在分解后的新关系模式中仍然应该被保持。、 阅读详情

相关推荐

【数据库系统】数据库系统概论——第六章 关系数据库理论

【数据库系统】数据库系统概论====第六章 关系数据库理论 6.1问题的提出 关系模式的表示 关系模式由五部分组成,是一个五元组:R(U,D,DOM,F)。 (1)关系名R是符号化的元组语义。 (2)U为一组属性。 (3)D为属性U中的属性所来自的域。 (4)DOM为属性到域的映射。 (5)F为属性组U上的一组数据依赖。 说明: (1)由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>。 (2)当且仅当U上的一个关系r满足F时,r称为关系模式R<U

Lydia233的博客 877

数据库题目【例1】关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}

如F={A→B,A→C,……如R3{E,D},R4{A,D},R5{A,E}都包含于R2{A,D,E},则删去,最终得到转化3NF的既有无损连接性又保持函数依赖的分解R1{A,B,C},R2{A,D,E}。得R1{A,B,C},R2{A,D,E},R3{E,D},R4{A,D},R5{A,E}。第一步:先将R转化3NF的保持函数依赖的分解,由算法一得出R1{A,B,C},R2{A,D,E},R3{E,D}。【例1】关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}

liusuihuashang的博客 1697

数据库系统原理范式分解——保持函数依赖与无损连接性练习题

1、关系模式R(A1, A2, A3, A4, A5,A6), 给定函数依赖集合F={ A2→(A3,A5); (A1, A3)→A6; (A2,A6)→ A4 },则关于R既保持 依赖又无损连接地分解成第三范式,分解正确 的是 A.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6) } B.p={R1(A2,A3, A5), R2(A1,A3,A6), R3(A2,A4,A6),R4(A1,A2) } C.p= {R1(A2,A3.A5), R2(A1,A2,A3,A

#两个西柚 1万+

【软考高级】2019年系统分析师综合知识

JDO(JavaDataObject,Java 数据对象)是 SUN 公司制定的描述对象持久化语义的标准 API,它。每个前趋关系可用(结点 1,结点 2)的形式表示,如:P1 到 P2 之间的前趋关系可用:(P1,P2)2、Zigbee,传输距离 50-300M,功耗 5mA,最大特点是可自组网,网络节点数最大可达 65000。CMP 模式的优点在于它基于 EJB 技术,是 SUNJ2EE 体系的核心部分,获得了业界的普遍支持,包。下表记录了六个结点 A、B、C、D、E、F 之间的路径方向和距离。

笔触狂放的博客 1168

python数据处理与分析案例,python如何进行数据处理

大家好,本文将围绕基于python的数据处理案例展开说明,python数据处理与分析案例是一个很多人都想弄明白的事情,想搞清楚python如何进行数据处理需要先了解以下几个事情。大家好,小编来为大家解答以下问题,python数据处理案例步骤及其代码,python数据处理与分析教程,今天让我们一起来看看吧!哈喽~今天学习记录的是数据分析实训小案例。就用这个案例来好好巩固一下 python 数据分析三剑客。

a17348的博客 1238

UE5新手必看:如何在UMG控件中嵌入浏览器实现Web页面展示(附完整步骤)

本文为UE5新手提供了在UMG控件中无缝集成Web浏览器的完整实战指南。详细介绍了从启用WebBrowser插件、创建并配置WebBrowser控件蓝图,到编写动态加载与交互逻辑,以及在游戏关卡中实例化UI的全过程。文章还分享了性能优化技巧与常见问题排查方法,帮助开发者高效实现游戏UI内的Web页面展示与交互。

weixin_29243063的博客 710

关系数据库理论

设R(U)是一个属性集U上的关系模式,X和Y是U的子集(X,Y都是属性的集合)。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。 X 称为这个函数依赖的决定属性集。Y=f(x)例: Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有: Sno → Ssex, Sno → Sage , Sno → Sdept,Sno ←→ Sname, Sna

huayu8086的博客 3444

极空间NAS零基础部署Wiki.js:Docker+PostgreSQL全流程避坑指南

本文提供了一份在极空间NAS上从零部署Wiki.js私有知识库的详细指南。通过Docker容器化技术,结合PostgreSQL数据库,手把手讲解环境准备、核心组件配置、性能优化及安全加固等全流程,并特别针对极空间平台特性提供了避坑要点,帮助用户打造安全、高效、自主可控的知识管理系统。

3a9bq4r8t2y的博客 486

基本函数依赖和候选键_[总结]关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式、……)...

联系(Relationship)1:1联系:如果实体集E1中的每个实体最多只能和实体集E2中一个实体有联系,反之亦然,那么实体集E1对E2的联系成为一对一联系,记为1:1;1:N联系:一对多,记为1:N;M:N联系:多对多联系,记为M:N。函数依赖(FunctionDependency)定义设关系模式R(U),属性集合U={A1,A2,…,An},X,Y为属性集合U的子集,如果对于关系模式R(U)...

weixin_39587113的博客 3449

UE5入门第二周总结:基于蓝图的国际象棋的实现

在C++的学习中,这是一个入门级别的项目。我们的目标是灵活运用蓝图的特性和强大的可视化功能,做出这一入门级项目的同时,思考如何优化并改进算法,并尽可能的用面向对象的方法实现,用蓝图中的继承和多态简化编码过程。

YoungeYang的博客 1259

微信小程序 - 最新详细实现调起手机摄像头拍摄身份证人像面和国徽面取景框功能,在拍照相机上增加身份证证件照的轮廓或自定义文字,支持替换扫描拍摄辅助线图片及文本,小程序实现拍照身份证时带取景轮廓框拍摄!

微信小程序,身份证,证件照,人像,证件照提示框模板,vue身份证拍照框,摄像机相机里有引导内容,取景框拍摄,微信小程序实现拍照界面自定义实现,自拍人相框拍摄,取景框,户口簿取景框,画布指定区域生成图片,微信小程序身份证正反面拍照如何加入辅助图片引导照片,身份证取景框拍摄,服务器,上传,正反面,调起手机摄像头:拍摄身份证的正反面,自定义身份证取景框,在相机上绘制“身份证轮廓“与提示文字,拍摄身份证时出现人像框怎么实现,在相机上增加图片和文字,微信小程序怎么给调起的相机加入自定义图片,小程序实现给相机上面

🏆 前端领域优质创作者 1万+

函数依赖与关系模式分解的一些技巧整理

函数依赖与关系模式分解的一些技巧整理

f815501810的专栏 1万+

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2881

数据库原理-关系模式的规范化

关系数据库的规范化理论是数据库逻辑设计的工具 一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化 规范化程度可以有6个不同的级别,即6个范式 规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异 常、删除异常、修改复杂、数据冗余等问题,解决方法就是对其进行规范化, 转换成高级范式。 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的 关系模式集合,这种过程就叫关系模式的规范化。 1.关系模式规范化的步骤 消除决定属性集非码的非平凡函数依赖 1

muziiii的博客 1万+

解读(DivideMix)DIVIDEMIX: LEARNING WITH NOISY LABELS AS SEMI-SUPERVISED LEARNING

这是Salesforce在今年年初出的一篇关于半监督学习的文章被ICLR 2020收录,目前还保持在SOTA状态。 文章主要做了两点工作: • 提出了一个co-divide方法。 • 利用label co-refinement 和co-guessing 改善之前的谷歌提出的MixMatch方法 1.co-divide方法 大概思路:同时训练两个网络,让每个网络在样本损失分布上去拟合GMM模型,并利用GMM模型,将训练数据分为标签数据和未标签数据,co-divide 使前面分的标签与未标签数据分别在

so 5041

MMC混合型换流器系统设计与开关模型仿真

摘要:本文针对220kV交流/400kV直流电压等级,设计了由20个半桥和20个全桥子模块组成的混合型MMC换流器系统。通过建立开关函数等效模型,研究了其拓扑结构、工作原理及控制策略,包括NLM调制、电容电压均衡和环流抑制。MATLAB/Simulink仿真结果表明,系统直流电压波动控制在±5%以内,交流电流THD低于1.8%,验证了混合型MMC在高压大功率应用中的良好性能。该研究为工程实践提供了参考依据。 关键词:模块化多电平换流器;开关函数模型;混合子模块;最近电平逼近调制;电容电压均衡

huanghm88的专栏 133

系统架构设计师-关系数据库规范化理论:函数依赖、范式与模式分解

本文系统讲解了数据库规范化理论的核心知识点,包括函数依赖分类、Armstrong公理系统、候选码求解方法、四级范式判定标准以及模式分解设计原则。文章重点分析了1NF至BCNF各级范式的判定规则和优化目标,强调3NF在业务系统中的适用性平衡。针对软考备考,提炼了候选码求解、范式等级判定等高频考点,并给出业务实践中不同场景的范式选择建议。全文通过概念定义、原理说明、例题解析和图表辅助,构建了完整的规范化理论知识体系,为数据库设计和软考应试提供系统指导。

专注知识分享,希望可以帮助到需要的同行,感谢关注与支持!专注知识分享,希望可以帮助到需要的同行,感谢关注与支持! 805

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【数据库原理及应用】——关系数据库的规范化理论(学习笔记)

关系数据库的规范化理论是数据库设计的一个理论指南,提供了判断一个关系模式优劣的理论依据。本章讨论的关系数据库的规范化理论主要包含三方面内容:函数依赖、范式和模式分解准则。函数依赖起着核心作用,是模式分解的基础,而范式是模式分解的标准。

HinsCoder的博客 2578

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据库(五)——规范化理论

数据库规范化是关系数据库设计的关键过程,通过分解表结构消除数据冗余和操作异常。规范化从第一范式(1NF)到第五范式(5NF)逐步推进:1NF要求属性不可再分;2NF消除部分函数依赖;3NF消除传递依赖;BCNF强化主键约束;4NF处理多值依赖;5NF解决连接依赖。规范化能有效减少数据冗余,避免更新、插入和删除异常,提高数据一致性。实际应用中通常满足3NF或BCNF即可,4NF和5NF多用于理论场景。规范化的核心在于通过合理的表拆分,使数据库结构既高效又易于维护。

2501_90419475的博客 606

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关系数据库规范化理论

关系数据库逻辑设计 针对某一个具体问题,应如何构造一个适合于他的数据模式,即应该构造几个关系,每个关系有那些属性组成等。 数据库逻辑设计的工具-关系数据库的规范化理论。 数据依赖 关系:描述实体及其属性、实体间的联系。它是一个二维表,是涉及属性的笛卡尔积的一个子集 关系模式:用来定义关系{Student(StuNo,SName,SSex,SAge)} 关系数据库:基于关系模型的数据库,利用关系来描述现实世界。从形式上看,它由一组关系组成。 关系数据库的模式:定义这组关系的关系模式的全体。 关系模

five-five 3608

关系数据库的设计和规范化理论

关系数据库的规范化理论 1.1 作用 用规范理论来改造关系模式以解决插入异常、删除异常、更新异常、数据冗余问题 1.2 基本思想 ①逐步消除数据依赖中不合适的部分,使模式中各关系模式达到某种程度的“分离” ②采用“一事一地”的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种练习 ③若多于一个概念就把它“分离”出去,因此所谓规范化实质上是概念的单一化 ④数据库模式结构必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的,能够反映现实世界的模式 ⑤分解后的信息应该是可以通过连接还原原

alinyinlei的博客 992

数据库系统工程师常考题型速记

已知关系模式R(U,F),其中属性集U={A,B,C,D,E,G},函数依赖集F={BC->E,DC->B,D->A,B->G,函数依赖集F={BC->E,DC->B,D->A,B->G,D->E,E->G,B->C},主属性DBC,非主属性AEG。这道题中,非主属性A依赖D,而不是DB,说明非主属性部分依赖于候选码,没有全部依赖,不满足2NF,所以是1NF。B→G:能由其他函数依赖推导出,(B->C,BC->E,E->G)删掉。其中,L的属性一定是候选码,R的属性一定不是候选码,LR的属性可能是候选码。

IT民工的博客 1075

《数据库原理及应用》之FAQ

第四章142. 什么是关系数据库?关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。关系实质上是一张二维表。143. 一个关系模型有哪两个方面内容?一个关系模型包括外延和内涵两个方面的内容。外延就是通常所说的关系,或实例,或当前值。它与时间有关,随着时间的推移在不断变化。(由于元组的插入、删除、修改引起的

红杉树(ecitnet)的博客 2918

数据库第六章

6.1 问题的提出 关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据模式 数据库逻辑设计的工具──关系数据库的规范化理论 关系模式由五部分组成,是一个五元组:             R(U, D, DOM, F) 关系名R是符号化的元组语义 U为一组属性 D为属性组U中的属性所来自的域 DOM为属性到域的映射 F为属性组U上的一组数据依赖 由...

rsrzrcj2018的博客 817

数据库总结第六章

第六章  关系数据理论 6.1 问题的提出 关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据模式 数据库逻辑设计的工具──关系数据库的规范化理论 关系模式由五部分组成,是一个五元组:             R(U, D, DOM, F) 关系名R是符号化的元组语义 U为一组属性 D为属性组U中的属性所来自的域 DOM为属性到域的映射 F为属性组...

MagicBiao_的博客 1772
上一篇: [总结]数据库管理(事务、ACID、并发、封锁、可串行化、隔离、……)
下一篇: 一个游戏程序员的学习资料
folio
博客等级 码龄19年 15粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值