
首先对于给定的R(U)和函数依赖集F,可以将它的属性划分为4类:
L类,仅出现在F的函数依赖左部的属性。
R类,仅出现在F的函数依赖右部的属性。
N类,在F的函数依赖左部和右部均未出现的属性。
LR类,在F的函数依赖左部和右部两部均出现的属性。
根据以下定理和推论来求解候选码。
定理1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
推论1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性,则X必为R的唯一候选码。
定理2:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。
定理3:设有关系模式R及其函数依赖集F,如果X是R的N类属性,则X必包含在R的任一候选码中。
步骤:
(1)将R的所有属性分为L、R、N、LR四类,令X代表L、N两类,Y代表LR类。
(2)求 X+(X的闭包)若X+包含了R的全部属性,则X即为R的惟一候选码,转(5);否则转(3)在Y中逐一取每个属性A,求(XA)+。若它包含了R的全部属性,则转(5);否则调换一属性反复进行这一过程,直到试完所有Y中的属性。
(4)在Y中依次取两个、三个属性…求它们的属性闭包直到其闭包包含R的全部属性。
(5)输出结果。
1、给出解题的过程:
aL:B ; R:D,E ; LR:A,C ;没有N类属性
bD和E不包含在任何候选码中,只剩下A,B和C,而B属于L类,故必定包含在任意候选码中。将A,B和C组合:AB,BC和ABC
c求闭包
AB的闭包:ABCDE
BC的闭包:ABCDE
不用再计算{ABC}的闭包了,因为存在两个元素的候选键的闭包包含全部属性
d输出候选码为AB,BC
2、求F的最小覆盖为:F1={AB->C,C->A,C->D,B->E}则无损且保持函数依赖的分解为:
R1(A,B,C) R2(C,A,D) R3(B,E)
或者分解R1(A,B,C) R2(C,D) R3(B,E)也是正确的。
闭包是一个可调用的对象 它记录了一些信息 这些信息来自于创建他的作用域 用过这个定义 可以看出内部类是面向对象的闭包 因为他不仅包含外围类对象的信息 还自动拥有一个指向此外围类对象的引用 在此作用域内 内部类有权 *** 作所有的成员 包括private成员
Java代码
interface Incrementable
{
void increment();
}
class Callee implements Incrementable
{
private int i= ;
public void increment()
{
i++;
System out println(i);
}
}
class MyIncrement
{
void increment()
{
System out println( other increment );
}
static void f(MyIncrement mi)
{
mi increment();
}
}
class Callee extends MyIncrement
{
private int i= ;
private void incr()
{
i++;
System out println(i);
}
private class Closure implements Incrementable //内部类
{
public void increment()
{
incr();
}
}
Incrementable getCallbackReference()
{
return new Closure(); //新建内部类
}
}
class Caller
{
private Incrementable callbackRefference;
Caller(Incrementable cbh)
{
callbackRefference = cbh;
}
void go()
{
callbackRefference increment();//调用increment()方法
}
}
public class Callbacks
{
public static void main(String [] args)
{
Callee c =new Callee ();
Callee c =new Callee ();
MyIncrement f(c );
Caller caller =new Caller(c );
Caller caller =new Caller(c getCallbackReference());//将内部类中的Closure赋给Caller
caller go();
caller go();
caller go();
caller go();
}
}
输出
other increment
Callee 继承字MyIncrement 后者已经有一个不同的increment()方法并且与Incrementable接口期望的increment()方法完全不相关 所以如果Callee 继承了MyIncrement 就不能为了Incrementable的用途而覆盖increment()方法 于是这能使用内部类独立的实现Incrementable
lishixinzhi/Article/program/Java/hx/201311/25624
利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。从题目来看,F中的任何一个函数依赖的右部仅含有一个属性:{A→B,B→A,B→C,A→C,C→A}
第二步去冗余的的顺序不同,产生结果也会不同,故最小函数依赖集合不止一个,还可发现另一个最小(极小)函数依赖集合为:{A→B,B→A,A→C,C→A}
给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示。函数概念含有三个要素:定义域A、值域C和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
扩展资料:
函数的对应法则通常用解析式表示,但大量的函数关系是无法用解析式表示的,可以用图像、表格及其他形式表示。
函数与不等式和方程存在联系(初等函数)。令函数值等于零,从几何角度看,对应的自变量的值就是图像与X轴的交点的横坐标;从代数角度看,对应的自变量是方程的解。
另外,把函数的表达式(无表达式的函数除外)中的“=”换成“<”或“>”,再把“Y”换成其它代数式,函数就变成了不等式,可以求自变量的范围。
参考资料来源:百度百科——函数
以上就是关于数据库选择,图片第70题全部的内容,包括:数据库选择,图片第70题、Java中的闭包与回调、数据库:求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)