-
求关系模式中的候选键
2018-07-10 17:51:02关系模式R的候选建是方法:从函数依赖集出发,把所有属性分为4类1、L类:全部出现在函数依赖的左半部2、R:全部出现在函数依赖的右半部3、LR:出现在函数依赖的左右两边4、N:不出现在函数依赖中可能成为候选键的有L...问题: 关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W}.关系模式R的候选建是
方法:
从函数依赖集出发,把所有属性分为4类
1、L类:全部出现在函数依赖的左半部
2、R:全部出现在函数依赖的右半部
3、LR:出现在函数依赖的左右两边
4、N:不出现在函数依赖中
可能成为候选键的有L类,LR类和N类
对于L类,求出它的闭包,若包含所有属性,则说明其为候选键,且为唯一候选键.
对于LR类,求出其闭包,若包含所有属性,则为候选键,若不包含,在找出其中一个属性结合.
对于N类,直接加至候选键即可.
对于你的题目
L:无
R:z
LR:w,x,y
N:无
先排除z在LR中,
w的闭包为{w,y,z,x}
x的闭包为{x,z}
y的闭包为{y,w}
wx的闭包为{w,x,y,z}
wy的闭包为{w,y}
xy的闭包为{x,y,z,w}
wxy的闭包为{x,z,y,w}
由此可见,候选键为{w,wx,xy,xyw}
可从候选键中选取一个作为主键. -
求关系模式中的候选键(软考,数据库)
2012-04-26 19:29:54求关系模式中的候选键,是软考中的考点,但视频中没有讲,所以值得一提。 求闭包 给定关系模式R(U,F),U={A,B,C,D,E},F={B->A, D->A, A->E,AC->B},其属性AD的闭包为______. 解:设X(0)=AD,计算X...求关系模式中的候选键,是软考中的考点,但视频中没有讲,所以值得一提。
求闭包
给定关系模式R(U,F),U={A,B,C,D,E},F={B->A, D->A, A->E,AC->B},其属性AD的闭包为______. 解:设X(0)=AD,计算X(1):逐一扫描F集中的各个函数依赖,找左部是A、D、AD的函数依赖,得到A E。于是X(1)=X(0)∪EA=ADE。由于X(0)!=X(1),所以继续扫描,于是X(2)=X(1)∪EA=ADE。由于X(2)=X(1),所以算法到此为止,属性AD的闭包为X(2),即ADE。
求候选键
关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X,X→Z,Y→W}。关系模式R的候选建是__
解法:从函数依赖集出发,把所有属性分为3类
1、L类:全部出现在函数依赖的左半部
2、R:全部出现在函数依赖的右半部
3、LR:出现在函数依赖的左右两边可能成为候选键的有L类,LR类
对于L类,求出它的闭包,若包含所有属性,则说明其为候选键。
对于LR类,求出其闭包,若包含所有属性,则为候选键;若不包含,再和LR类中的其他属性组合。
对于N类,直接加至候选键即可。对于这道题
L:无
R:z
LR:w,x,y
先排除z
在LR中,w的闭包为{w,y,z,x}
x的闭包为{x,z}
y的闭包为{w,y,z,x}所以,w和y为候选键。
-
关系模式中的范式判断题
2016-05-03 13:06:34R=(A,B,C),F=(A→B,B→A,C→A),请问这是第几范式?求大神解析 -
关系模式中的闭包及其求法——数据库原理
2019-11-25 20:52:44以下内容都是从百度知道中收集而来,希望能对大家有用 关于闭包易懂的理解方法 闭包就是由一个属性直接或间接推导出的所有属性的集合,例如: f={a->b,b->c,a->d,e->f} 由a可直接得到b和d,间接得到c,...以下内容都是从百度知道中收集而来,希望能对大家有用
关于闭包易懂的理解方法
闭包就是由一个属性直接或间接推导出的所有属性的集合,例如:
f={a->b,b->c,a->d,e->f}
由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}
-
关系模式中求候选码、闭包、最小依赖函数集、分解成3NF且保持函数依赖、分解成3NF且保持函数依赖和无损连接...
2020-04-12 21:52:41在准备研究生复试的过程中,数据库中的关系模式里面有几个问题比较容易混淆。 一个是最小依赖函数集,一个是求候选码,一个是求闭包,一个是要把关系模式分解成3NF且保持函数依赖,一个是分解成3NF且保持函数依赖和...前言
在准备研究生复试的过程中,数据库中的关系模式里面有几个问题比较容易混淆。
一个是最小依赖函数集,一个是求候选码,一个是求闭包,一个是要把关系模式分解成3NF且保持函数依赖,一个是分解成3NF且保持函数依赖和无损连接。记录一下我对这几个问题的求法。可能会有哪里有漏洞,希望可以指出来。
求闭包
什么叫闭包?
闭包就是由一个属性直接或者间接推出的所有属性的集合。
例如:a→b,b→c;那么a的闭包就是{a,b,c};例子:设有关系模式R(A,B,C,D),F是R上的FD集,F={AB→C, C→D, E→A, D→B},求属性集AB的闭包;
解:
要求AB的闭包,首选我们可以设AB的闭包为X={A,B};
要找到AB的闭包,那么就是在X的基础上,只要是X的子集能直接或者间接推出的属性,就把它给加到X里面,然后再在这个新的X基础上,再继续查找是否有属性能被X的子集推出,有的话添加进去X里面,没有则结束。由于AB→C,那么就把C加到X中,C又可以推出D,则把D也加到X中,D可以推出B,但是B已经在X里面了,继续检查,已经检查完毕,所以AB的闭包就是{A,B,C,D};
求候选码
候选码的定义:能唯一地标识一个元组的属性组的值,就称为候选键,也就是不含有多余属性的超键。(即候选键的子集就不能唯一地标识元组了)
设关系模式有N个属性,全集U中属性在FD集中有四种情况:
①只出现在F左边
②只出现在F右边
③在F的左右均出现
④不出现在F中notes:
Ⅰ、只出现在F右边的属性,肯定不属于候选键;
Ⅱ、只出现在F左边的属性,一定存在于某个候选码里面,如果它的闭包是U,那么它一定是候选码;
Ⅲ、出现在F左右两边的属性,如果它的闭包是U,那么它一定是候选码,如果闭包不是U,那么再让其与另外一个同样出现在F左右两边的属性结合,再求闭包;
Ⅳ、 不出现在F中的属性,直接添加到候选码当中;例子:设有关系模式R(A,B,C,D,E),F={A→CD,BC→E,D→B,E→A}为R上的函数依赖集,试求R上的所有候选码;
解:
首先观察函数依赖集F,对其中的属性进行分组,
只出现在F左边:无
只出现在F右边:无
出现在F左右两边:A,B,C,D,E
不出现在F中:无对属性进行了分类之后,这个例子里面的属性均出现在F左右两边,那么就要先对每个属性求闭包;(根据上面求闭包的方法)
A的闭包:{A,B,C,D,E};因为闭包是U,所以属性A是候选码;
B的闭包:{B};
C的闭包:{C};
D的闭包:{D,B};
E的闭包:{A,B,C,D,E};因为闭包是U,所以E是候选码;对剩下的三个属性B,C,D继续组合求闭包;
(这里注意为什么不用再考虑A和E属性,这里需要注意候选码的定义:候选码是不能有多余属性的超键,候选码的子集是不能够唯一标识元组的,否则我们把A和E考虑进去,求出来的就是超键而不是候选键)对B和C组合,求BC的闭包:{A,B,C,D,E},闭包是U,所以是候选码;
对B和D组合,求BD的闭包:{B,D},不是候选码;
对C和D组合,求CD的闭包:{A,B,C,D,E},闭包是U,是候选码;到了这里就已经结束了;
所以R上的所有候选码是(E),(A),(B,C),(C,D);补充:如果R上还有一个属性G没有出现在函数依赖集F中,也就是属性G是上面所说的第四种情况,那就把属性G添加到候选码当中。
求候选码其实就是求闭包;
最小函数依赖集
最小函数依赖集,通俗的说,其实就是**不含有冗余属性和冗余依赖关系,且F的依赖关系中的右边全部都是单一属性;**
求最小函数依赖集的**步骤**:
1、将F中的所有依赖右边化为单一元素;
2、去掉F中的所有依赖左边的冗余属性;
3、去掉F中所有冗余依赖关系;例子:F={ABD→E,AB→G,B→F,C→J,CJ→I,G→H};求最小函数依赖集;
解:
①将F中的所有依赖右边化为单一元素;这里已经满足了;
(举个例子,如果有A→CD,就拆开成A→C,A→D);②去掉F中的所有依赖左边的冗余属性;
(对于依赖左边有多个属性的,去掉其中一个,看是否还能使依赖关系成立,如果成立,那么去掉的这个属性是冗余的,否则就不是冗余的)ABD→E,假如去掉A,求出BD的闭包,不包含E,所以属性A不冗余,不能去掉A,同理,如果去掉B或者D,AD和AB的闭包都不包含E,所以都不冗余;
同理,AB→G,A和B都不冗余;
B→F,C→J,G→H这三个的依赖左边都只有单个属性,所以跳过不考虑;剩下最后一个CJ→I,这里如果去掉C,J的闭包是不包含有I的,所以C不冗余,但是如果去掉J,因为C→J,所以J是冗余的,所以这里去掉冗余属性J;
所以整理后,F={ABD→E,AB→G,B→F,C→J,C→I,G→H};
③去掉F中所有冗余依赖关系;
(这里是从F中去掉某个依赖关系,例如去掉了X→Y,从剩下的依赖关系中,求X的闭包,若闭包中包含了Y,那么X就是冗余的,需要去掉);如果去掉ABD→E,F就剩下了F={AB→G,B→F,C→J,C→I,G→H};
这里我们求ABD的闭包,闭包是{A,B,D,G,H,F},不包含E,所以ABD不冗余,不可去掉;同理,如果去掉AB→G,AB的闭包是{A,B,F},不包含G,所以不冗余,不能去掉;
同理,B→F,C→J,C→I,G→H都不是冗余的,不能去掉;
所以最小函数依赖集F={ABD→E,AB→G,B→F,C→J,C→I,G→H};
题目参考:最小函数依赖集百度百科
分解成3NF且保持函数依赖
参考了书本上的模式分解的算法,对于分解成3NF保持函数依赖的分解,书本上用的是合成法。
思路:
①对函数依赖集F进行极小化处理,即把F变为最小依赖函数集F’;
②对所有不出现在F’中的属性记为U0,把这些属性从U中去掉,剩余的属性仍然记为U;
③对F‘按照具有相同左部的原则分组,对于每一组的并集,如果可以组合成U,那么3NF的分解完成。这里参考了JensLee的博客;
这位博主在中间加了两个步骤:
①如果求得的函数最小依赖集左部都是单属性,则已经完成对关系模式的3NF分解,结束。
②去掉多余的函数传递依赖;例子:关系模式R<U,F>,有U={A,B,C,D,E,S,G},F={B→G,CE→B,C→A,CE→G,B→D,C→D};将关系模式分解为3NF且保持函数依赖;
解:
首先求出最小函数依赖集, 根据前面给出的例子,这里过程就不再赘述;
求出最小函数依赖集F={B→G,CE→B,C→A,B→D,C→D};这里F中没有出现属性S,所以把它从U中去掉,新的U是{A,B,C,D,E,G};
然后将F按照左部 相同的原则进行组合,就变成了(BGD),(CEB),(CAD);
(这里检查一下,把三个组并起来,能重新组合成U,所以分组没问题)这里就可以下结论,已经完成了3NF的分解,且 保持函数依赖;
结果为:(BGD),(CEB),(CAD);分解成3NF且保持函数依赖和无损连接
这里的情况和分解成3NF并保持函数依赖挺像的,但是多了一个约束条件:要保持无损连接;
参考了书本上的算法和high-functioning的博客;
下面给出分解的方法步骤:
①先求出保持函数依赖的3NF分解;
②求出关系模式的候选码;
③对保持函数依赖的分解结果和候选码作并集∪,令τ= ρ ∪{R(X)};
④若存在X⊆Ui,则将R(X)从τ中去掉;若存在Ui⊆X,则将R(Ui)从τ中去掉;例子:(还是选用上例进行分析)
关系模式R<U,F>,有U={A,B,C,D,E,S,G},F={B→G,CE→B,C→A,CE→G,B→D,C→D};将关系模式分解为3NF且保持函数依赖和无损连接;解:
上面已经求出了保持函数依赖的3NF分解,结果为(BGD),(CEB),(CAD);
求关系模式的候选码,这里求出的候选码为:{SCE};(过程不再赘述)
对候选码和分解结果作∪,τ={R1(BGD),R2(CEB),R3(CAD),Rx(SCE)};
由于Ui和X之间没有包含关系,所以 答案即为所求。
结果为:τ={R1(BGD),R2(CEB),R3(CAD),Rx(SCE)};
(结果为保持了函数依赖和无损连接的3NF分解) -
关系模式与该模式中表的关系
2018-05-07 23:51:28关系模式的创建相当于圈了一块地,而在该模式下创建的表,则是相当于对该块地的具体规划。 -
数据库关系模式
2019-11-08 19:28:421.数据库关系模式中三级两映像结构知识点 ( 1)模式(基本表) 模式即逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式,即对应数据库中设计的基本表... -
E-R图转化为关系模式
2019-06-09 15:28:01(1)若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 (2)若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的... -
关系模式的规范化理论
2019-05-11 19:43:44范式级别可以逐级升高,而升高规范化的过程就是逐步消除关系模式中不合适的数据依赖的过程,使模型中的各个关系模式达到某种程度的分离。一个低一级范式的关系模式,通过模式分解转为若干个高一级范式的关系模式的... -
关系模式
2019-02-25 14:23:00先来张图,看看这11中模式的关系: 第一类:通过父类与子类的关系进行实现。 第二类:两个类之间。 第三类:类的状态。 第四类:通过中间类 image.png 父类与子类关系 0、策略模式(strategy) 策略模式定义了... -
设计模式中类的关系
2012-01-09 14:51:50在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。 1. 依赖(Dependence) 依赖关系的定义为:对于两个相对独立的... -
关系模式,关系,关系数据库
2020-03-11 22:13:06关系模式是型、关系是值,关系模型是对关系的描述(元组集合的结构、完整性约束条件)是静态的、稳定的;关系是关系模式在吗某一时刻的状态或内容,是动态的、随时间不断变化的;关系数据库是在给定应用领域中所有关系... -
关系,关系模式,关系模型区别和联系
2019-12-18 09:40:11关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据 类似于面向对象程序设计中”类“与”对象“的区别。”... -
E-R图转换为关系模式
2013-10-22 11:19:101.实体类型的转换 (1)将每个实体类型转换成一个关系模式。 (2)实体的属性即为关系模式的属性。 (3)实体标识符即为关系... (2)若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的 -
数据库Mysql——ER图转换成关系模式
2020-05-20 16:17:39E-R图转化成关系模式的步骤 ...(1)若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 (2)若实体间联系是1:N,则在N端实体类型转换成的 -
设计模式中关系在代码中的体现
2017-05-06 17:17:31学习完设计模式有一段时间了,以前一直为里面的关系所困扰,不知道这些关系在代码中是怎样实现的,现在通过查阅资料对其有了一定的了解,自己简单制作了一个ppt,现在简单介绍一下。 为什么会做这个PPT呢,... -
关系模式范式
2016-08-11 14:07:23数据库的关系模式范式就是...说明:在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库不是关系数据库。 第二范式(2NF):非主属性完全依赖于主键(消除部分主函数依赖) 如果关系模式 -
数据库中的各种定义,关系、关系模式、关系模型……
2019-12-08 23:05:46数据:数据就是数据库中存储的基本数据,比如学生的学号、学生的班级 数据库:存放数据的仓库 数据库管理系统:数据库软件,如MySQL、Oracle 数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(大佬) 实体... -
数据库原理与应用(5)——关系、关系模式、关系数据库与关系数据库模式
2020-03-15 23:20:17数据库原理与应用(5)——关系、关系模式、关系数据库与关系数据库模式 一、关系的形式化定义和概念 1、关系上域的定义 域(Domain):一组具有相同数据类型的值的集合,又称为值域(用D表示) 整数、实数、和字符... -
[转]E-R图转换为关系模式
2017-12-17 09:21:54转自 http://blog.csdn.net/u012501459/article/details/129451911.实体类型的...(1)若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性 -
数据库 关系模式和关系的区别
2020-03-07 13:54:17定义 关系(Relation) D1 × D2 × ··· × Dn 的子集叫做在域D1,D2,···,Dn 上的关系,表示...在二维表中的行定义,即对关系的描述称为关系模式。 一般表示为(属性1,属性2,…,属性n) 例如:老师的关... -
数据库系统原理——ER图转换成关系模式集的算法
2014-03-21 12:21:49上一篇博文提到了ER模型和关系模型,现在就来谈一下两者之间是怎么转换的。...若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键(作为外