首页/ 题库 / [单选题]设关系模式R为R(H,I,J,K,L),的答案

设关系模式R为R(H,I,J,K,L),R上的一个函数依赖集为F={H→J,J→K, I→j,JL→H},分解(23)是无损联接的。

单选题
2022-01-02 07:11
A、p={HK,HI,IJ,JKL,HL}
B、P={HIL,IKL,IJL}
C、P={HJ,IK,HL}
D、P={HI,JK,HL}
查看答案

正确答案
B

试题解析
解析:在本题中,因为关系模式分解为3个以上的子模式,所以不能使用(2)题介绍的判定定理,下面,我们介绍另外一种比较通用的判定方法。设关系模式R=A1,…,An,R上成立的FD集为F,R的一个分解p={R1,…,Rk)。无损联接分解的判断方法如下:(1)构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上符号bij。(2)把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的元素。修改方法如下:对于F中一个FDX→Y,如果表格中有两行在X分量上相等,在Y分量上不相等,那么把这两行在Y分量上改成相等。如果Y的分量中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中的一个bij替换另一个(尽量把ij改成较小的数),一直到表格不能修改为止。(3)若修改的最后一张表格中有一行全是a,即(a1,a2,…,an,那么p相对于F是无损联接分解,否则是损失联接分解。根据上述判断方法,我们列出选项B的初始表如表18-2所示。此表的填法就是:有字段处用aj表示,没有字段处用bij表示。例如,因为子模式HIL有字段H,I,L,所以对应的列用ai表示,其他列则用bij表示。接下来比较函数依赖。因为函数依赖集中有函数依赖关系H→J,但表18-2中H列没有相同的值,所以不要修改。再看函数依赖J→K,表18-2中J列也没有相同的值,所以也不要修改。接着看函数依赖I→J,表18-2中第2列的值都为a2,而第3列的值不一样且有一个为a3,所以可以把b13和b23改为a3。后面的修改用同样的规则,表18-2变换为表18-3。在此基础上,对于函数依赖集中的JL→H在属性列J和L上对应的1,2,3行上为a3,a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表18-4所示。从表18-4可以看出,第二行为a1,a2,a3,a4,a5,所以p是无损联接。

标签:
感兴趣题目
有以下程序 main() { int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;<4:i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]{t=a[j][i];a[j][i]=a[k][i]=a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf("%d,",a[i][i]); } 程序运行后的输出结果是
下列语句序列执行后,k的值是 ( ) int j=8,k=15; for(int i=2;i!=j;i++) {j-=2;k++;}
基于以下描述:有关系模式R(A, B, C, D, E, F, G, H, I, J),根据语义有如下函数依赖集:F={ABD→E, AB→G, B→F, C→J, C→I, G→H}。
工序(i,j)的最早开工时间R(i,j)等于()
有关系模式A(C,T,H,R,S),其中各属性的含义是:C:课程 T:教员 H:上课时间 R:教室 S:学生根据语义有如下函数依赖集:F={C→T,(H,R)→C,(H,T)→R,(H,S)→R}现将关系模式A分解为两个关系模式A1(C,T),A2(H,R,S),J其中A1的规范化程度达到(23)。
有以下程序 main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for(j=2;j>=i;j--) if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;} for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]){ k=x[j];x[j];x[j+1];x[j+1]=k;} for(i=0;i<8;i++)printf("%d",x[i]); printf(" "); } 程序运行后的输出结果是
下面程序段的执行结果为( )。 int i=3,j=0,k=0; for(;i>0;--i) { ++k; do { ++j; if (i!=j) break; ++k; }while(j<5); } printf("i=%d j=%d k=%d ",i,j,k);
有以下程序: #include <iostream> using namespace std; int main ( ) { int n[3],i,j,k = 2; for(i = 0;i<k;i++) n[i] = O; for(i = O;i<k;i++) { for(j = O;j<k;j++) n[j] = n[i] + 1; } cout<<n [0 ] <<end1; return 0; } 上述程序运行后,输出结果是( )。
给出下列代码, ( )行在编译时可能会有错误。 ①public void modify( ){ ②int i,j,k; ⑧i=100; ④while(i>0){ ⑤j=i*2; ⑥System.out.println("The value of j is"+j); ⑦k=k+l; ⑧} ⑨}
当Form_Click;事件发生时,窗体上显示的第三行是 ______。 Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer Dim x(5, 5) As Integer For i = 1 To 5 k = 1 For j = 1 To 5 If i <= j Then x(i, j) = k + 1 k=k+2 Else x(i, j) = k + 1 End If Next j Next i For i = 1 To 5 For j = 1 To 5 Print x(i, j) Next j Print Next i End Sub
有以下程序 main() { int i=1, j=l,k=2; if( (j++||k++)&&i++) printf (" %d, %d, %d " ,i, j,k); 执行后输出的结果是
有以下程序 #include"iostream.h" void main( ) { int i=1,j=1,k=2; if( (j++||k++)&&i++) cout < < i < < "," < < j < < "," < < k; cout< <end1; } 执行后输出结果是
相关题目
下列程序执行之后,输出的结果是______。 public class exl0 { public static void main(String[] args) { int j=0; a1: for (int i=3;i>0; i--) { j+=i; a2: for (int k=l; k<3; k++) { j*=k; if(i==k) break a1; } } System.out.println(j); } }
给出下列代码, ( )行在编译时可能会有错误。 ①public void modify( ){ ②int i,j,k; ⑧i=100; ④while(i>0){ ⑤j=i*2; ⑥System.out.println("The value of j is"+j); ⑦k=k+l; ⑧} ⑨}
有以下程序 main() { int x[]={1,3,5,7,2,4,6,0),i,j,k; for (i=o; i<3; i++) for(j=2;j>=i;j--) if(x[j+1]>x[j]){k=x[j]; x[j]=x(j+1); x[j+1]=k; } for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x(j+1]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for (i=0;i<8;i++) printf("%d",x[i]); printf(" "); } 程序运行后的输出结果是______。
有以下程序: #include <stdio. h> main ( ) { int x[ ] = {1,3,5,7,2,4,6,0} ,i,j,k; for(i =0;i<3;i ++ ) for (j =2;j> = i;j — ) if( x[j + 1 ] > x[j] ) { k = x[j] ;x[j] = x[j + 1 ] ;x[j + 1 ] = k; } for (i =0;i<3;i++) for(j =4;j <7-i;j ++) if(x[j] >x[j+1]){ k=x[j];x[j] =x[j+1];x[j+1] =k;} for (i=0;i<8;i ++) printf("%d" ,x[i]); prinff(" " );}程序运行后的输出结果是( )。
有以下程序: main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;j--) if (x[j+1)>x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;} for (i=0;i<3;i++) for (j=4;j<7-i;j++) if (x[j]>x[j+1]){k=x [j];x[j]=x[j+1];x[j+1)=k;} for(i=0;i<8;i++)printf("%d",x[i]); printf(" "); } 程序运行后的输出结果是 ______。
下面程序段的时间复杂度是(9)。for(i=0,k=0;<n;1++){ k+=A[i][j]; for(j=1;j<m;j++) A[i][j]=1}
设i,j,k均为int型变量,执行完下面的for循环后,k的值为() for (i=0,j=10;i<=j;i++,j--)k=i+j;
设有以下程序:#inlude main(){int k,j,i=100;j=&i;k=&j;printf(“%d”, k);}上述程序的输出结果是( )
有程序:K=0DO10I=1,6,2DO10J=1,6,3IF(K.LT.I*J)K=I*J10CONTINUEWRITE(*,*)KEND此程序执行后的输出结果为:()
请读程序: # include<srdio.h> main( ) { int n[2],i,j,k; { for(i=0,i<2;i + + )n[i]=0; k=2; for(i=0;i<k;i+ +) {for(j=0;j<k;j+ +)n[j]=n[i]+l; print{("%d ",n[k]); } 上面程序片段输出结果是 ( )
有以下程序: #include <stdio.h> main( ) { int i=1,j =2,k =3; if(i ++ == 1&&( ++j ==3 ‖ k ++ ==3) ) printf( "% d % d % d " , i, j, k ); } 程序运行后的输出结果是( )。
有以下程序: main() { int i=1,j=2,k=3; if(i++==l&&(++j==3||k++==3)) printf("%d%d%d ",i,j,k): } 程序运行后的输出结果是( )。
有以下程序 main() { int i=1, j=2,k=3; if(i++ == l && (++j==3|| k++==3)) printf("%d %d %d ",i,j,k); 程序运行后的输出结果是
下列程序的输出结果是( )。 main { int i=1,j=2,k=3; if(i++==1&&(++j==3==||k++== 3)) printf("%d%d%d\n",i,j,k); }
下列程序的输出结果是( )。 main( ) {int i=1,j=2,k=3; if(i++= =1(++j= =3= =‖k++= =3)) printf("%d%d%d\n",i,J,k); )
下列程序的输出结果是( )。 main() { int i=1,j=2,k=3; if(i++= =1&&(++j= =3‖k++ = =3)) printf("%d %d %d ",i,j,k); }
有以下程序: #include<stdio.h> main() { int i=1,j=1,k=2; if((j++||k++)&&i++) printf("%d,%d,%d ",i,j,k); } 执行后输出结果是( )。
有以下程序 #include"iostream.h" void main() { inti=l,j=1,k=2; if ((j++{}k++)&&i++) cout<< i << " ," << j << "," << k; cout<<endl; 执行后输出结果是
若有int i, j=30 , k=10;i=j==k*3?1:0;则i的值为( )。
设关系模式R为R(H,I,J,K,L),R上的一个函数依赖集为F={H→J,J→K, I→j,JL→H},分解(23)是无损联接的。
广告位招租WX:84302438

免费的网站请分享给朋友吧