07年福建省专升本软件工程试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2007年福建省高职高专升本科入学考试
软件工程专业知识试卷
(考试时间150分钟,满分300分,共三部分)
答题说明:答案卸载答题纸相应的位置上,写在试卷上一律不给分。

第一部C语言程序设计(100分)
一、单项选择题(本大题共30小题,每小题2分,共60分)
在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。

写在试卷上不得分。

1. 下列选项中合法的C语言关键字是 D
A.VAR
B.char
C.integer
D.default
2. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 C
A.-3
B.9
C.-12
D.6
3. 设x、y、r均为int型变量,则执行完语句:x=y=3;t=++x||++y;后,y的值为 C
A.不定值
B.4
C.3
D.1
4. 有以下程序段 A
int k=0;
while(k=1)k++;
while循环的次数是
A.无限次
B.语法错误
C.一次也不执行
D.执行1次
5. 以下程序执行后sum的值是 C
main()
{int I,sum;
for(i=1;i<6;i++)sum+=I;
printf("%d\n",sum);
}
A.15
B.14
C.不确定
D.0
6. 若变量a是int类型,并执行了语句:a='A'+1.6;,则正确叙述 D
A.a的值是字符C B.a的值是浮点型
C.不允许字符型和浮点型相加
D.a的值是字符'A'的ASCⅡ值加上1
7. 下列字符中,ASCⅡ码值最小的是 A
A.A
B.a
C.Z
D.z
8. 不能把字符串:Hello!赋给数组b的语句是 B
A.charb[10]={ 'H', 'e', 'l', 'l', 'o', '! '}
B.charb[10];b="Hello! ";
C.char b[10];strepy(b, "Hello! ");
D.char b[10]= "Hello! ";
9. C语言中运算对象必须是整型的运算符是 A
A.%= B./ C.= D.<=
10. 若变量已正确定义并赋值,下面符合C语言语法的表达式是 B
A.a:=b+1
B.a=b=c+2
C.int 18.5%3
D.a=a+7=c+b
11. 若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是 C
A.1 B.2 C.2.0 D.2.5
12. 能正确表示逻辑关系:"a≥10或a≤10"的C语言表达是 D
A.a>=10 or a<=10
B.a>=10|a<=10
C.a>=10&&a<=10 C.a>=10||a<=10
{ int y=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);
}
A.3 4
B.4 2
C.4 3
D.3 3
14. 有数组定义int a[2][2]={{1},{2,3}};则a[1][1]的值为 C
A.1
B.2
C.3
D.0
15. 有如下程序段 D
int a=14,b=15,x;
char c='e'
x=(a&&b)&&(c<'B');
执行完这段程序后,x的值为
A.true
B.false
C.1
D.0
16.有以下程序,程序运行后的输出结果是 C
void main()
{int I;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf ("%d",i);
case 2: printf ("%d",i);
default: printf ("%d",i);
}
}
A.022111
B.021021
C.000122
D.012
17. 若变量已正确定义并赋值,则下列条件语句中,功能与其他语句不同的是 D
A.if(a) printf("%d\n",x);else printf("%d\n",y);
B.if(a==0) printf("%d\n ",y);else printf("%d\n",x);
C.if(a!=0) printf("%d\n",x);else printf("%d\n",y);
D.if(a==0) printf("%d\n",x);else printf("%d\n",y);
18. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 B
A.for(i=1;i<=5;d++)p*=I;
B. for(i=1;i<=5;d++){p=1;p*=I};
C.i=1;p=1;while(i<=5){p*=i;i++};
D. i=1;p=1;do{p*=i;i++};while(i<=5);
19. 有以下程序,运行后的输出结果是 C
main()
{int a=7,b=8,*p,*q,*r;
p=&a;q+&b;
r=p;p=q;q=r;
printf("%d, %d, %d, %d\n",*p,*q,a,b)
}
A.8,7,8,7
B.7,8,7,8
C.8,7,7,8
D.7,8,8,7
20.以下选项中非法的表达式是 D
A.0<=x<100
B.i=j==0
C.(char)(65+3)
D.x+1=x+1
21. 有定义语句:int ,xy;。

若要通过scanf("%d,%d",&x,&y);语句变量x得到数值11,变量y得到数值12,下面四组输入形式,错误的是 A
A.11 12
B.11,12
C.11, 12
D.11, 12
若以下选项中的变量都已经确定并赋值,则对函数fun的正确调用语句是 C
A.fun(int y,double m);
B.k=fun(10,12,5);
C.fun(x,n)
D.void fun(n,x)
23. 已定义以下函数fun(int *p)
{return *p}
该函数的返回值是 C
A.不确定的值
B.行参p中存放的值
C.行参p所指存储单元中的值
D.行参p的地址值
24. 有以下程序
#include<stdio.h>
#define F(x,y) (x)*(y)
void main()
{int a=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是 A
A.12
B.15
C.16
D.20
25. 有以下程序 B
void main()
{ int a[3][3],*p,I;
p=&a[0][0]
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3
B.6
C.9
D.2
26. 有以下程序 C
struct STU
{char name[10];
int num;
int Score;};
void main()
{struct STU s[5]={ {"YangSan",20041,703};
{"LiSiGuo",20042,580};
{"WangYin",20043,680};
{"SunDan",20044,550};
{"WangYin",20045,537}};*p[5],*t;
int I,j;
for(i-0;i<5;i++)p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->Score>p[j]->Score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf("%d %d\n",s[1],Score,p[1]->Score);
}
程序运行后的输出结果是
A.550 550
B.680 680
C.580 550
D.580 680
{int I,j,t;
for(i=0;i<n-1;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t} }
void main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++)printf("%d, ",aa[i]);
printf("\n");
}
程序运行后的输出结果是
A.1,2,3,4,5,6,7,8,9,10 ;
B.10,9,8,7,6,5,4,3,2,1;
C.9,2,7,4,5,6,3,8,1,10 ;
D.1,10,3,8,5,6,7,4,9,2;
28. 有以下程序 D
void main()
{int i=0,s=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=I;
}
printf("%d\n",s)
}
A.10
B.13
C.21
D.程序进入死循环
29. 有以下程序
void main()
{int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("c%d\n",s[2]);
}
程序执行后的输出结果是 B
A.随机值
B.0
C.5
D.6
30. 设有以下定义和语句
int a[3][2]={1,2,3,4,5,6},*p[3]
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是 C
A.a[0][1]
B.a[1][0] Ca[1][1] D.a[1][2]
二、程序阅读题(本大题共4小题,每小题5分,共20分)
阅读下列程序,将输出结果写到答题纸的相应位置。

写在试卷上不得分
3
31. #include<stdio.h> int i,j;
for(i=0,j=0;*(a+i)!=’\0’;i++) {
if(*(a+i)==’ ’)continue;
}
*(b+j)=’\0’;
printf("\n%s\n",a);
printf("%s\n",b)
}
答案:I am a boy.
Iamaboy.
2002 Shangxian32. #include<stdio.h> #define MAX(x,y) (x)>(y)?(x):(y) void main()
{int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t)
}
答案:7
33. ##include<stdio.h>
void main()
{char a[]="123456789",*p;
int i=0;
p=a;
while(*p)
{if(i%2==0)*p’*’;
p++;i++;
}
puts(a);
}
答案:*2*4*6*8*
34. #include<stdio.h>
Typedef struct sudent{char name[10];
long sno;
float score;
}STU;
void main()
{STU a={"Zhangsan",2001,95};
{"Shangxian",2002,90};
{"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(,)>0)d=b;
if(strcmp(,)>0)d=c;
printf("%d%d\n",d.sno,p->name);
}
答案:2002 Shangxian
三、完善下列程序(本大题共3小题,每空2分,共20分)
请在答题纸相应的位置上填上正确答案。

写在试卷上不得分。

35. 以下为递归法球n!的函数
float fac(int n)
{float f;
if(n<0)
printf("error! ");
else if(n==0||n==1) return 1
Else f=fac(n-1)*n
return( f )
}
36. 以下函数把b字符串链接到a字符串的后面,并返回操作后a字符串的长度
streen(char a[].char b[])
{int num=0,n=0;
while(*(a+num)!= ‘\0’ )num++;
while(b[n]){*(a+num)=b[n];num++; n++ ;}
return( num )
}
37. 从键盘上输入0-9十个数字组成的字符串存入数组S中,然后求数组S中0-9的个数分别是多少,最后输出。

void fun(char *str,int *num)
{
int I;
num[*str-‘0’]+=1
str++;
}
}
void main()
{char s[81];
static int num[10];
int i;
printf("\nPlease enter 1line strings(0——9):\n");
scanf("%s", &s )
fun (s,num);
for(i=0;i<10;i++)
printf("%d:%3d\n",I,num[1]);
}
第二部分数据机构(共100分)
一、单项选择题(本大题共12小题,每小题2分,共24分)
在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。

写在试卷上不得分。

1.在待排序记录已基本有序的前提下,下述排序方法中效率最高的是:
A)直接插入排序B)简单选择排序C)快速排序D)归并排序
2.以下哪一个术语与数据的存储结构无关?
A)栈B)闭散列表C)线索二叉树D)双向链表
3.有6个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列:
A)5,4,3,6,1,2 B)4,5,3,1,2,6 C)3,4,6,5,2,1D)2,3,4,1,5,6
4.下述哪一条是顺序存储方式的优点?
A)存储密度大B)插入运算方便
C)删除运算方便D)可方便地用于各种逻辑结构的存储表示
5.对于只在表的首、尾进行插入操作的线性表,宜采用的存储结构为:
A) 顺序表B) 用头指针表示的单循环链表
C) 用尾指针表示的单循环链表D) 单链表
6.对包含n个元素的散列表进行查找,平均查找长度
A)为O(log2n) B)为O(n) C)为O(nlog2n) D)不直接依赖于n 7.下列哪一种图的邻接矩阵是对称矩阵?
A)有向图B)无向图C)AOV网D)AOE网
8. 设表(a1, a2, a3, ......, a32) 中的元素已经按递增顺序排好序,用二分法检索与一个给定的值k相等的元素,若a1<k<a2,则在检索过程中比较的次数是:
A) 3 B) 4 C) 5D) 6
9. 具有3个结点的二叉树最多可有多少种不同的形态。

A)2 B)3 C)4 D)5
10.对二叉树从1开始编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用的编号
方法是:
A、先序遍历
B、中序遍历
C、后序遍历
D、从根开始进行层次遍历
11.在长度为n的顺序表的第i ( 1≤ i ≤n+1 )个位置上插入一个元素,元素的
移动次数为:
A) n-i+1B) n-i C) i D) i-1
12. 对于一个无向图,下列说法正确的是
A)每个顶点的入度大于出度;
B)每个顶点的度等于其入度与出度之和;
C)无向图的邻接矩阵一定是对称矩阵;
D)有向图中所有顶点的入度之和大于所有顶点的出度之和;
二、填空题(本大题共10小题,每空2分,共22分)
请在答题纸相应的位置上填上正确答案。

写在试卷上不得分。

13.设一哈希表表长M为100 ,用除留余数法构造哈希函数,即H(K)=K % P
(P<=M), 为使函数具有较好性能,P应选97
14.N个结点的二叉树采用二叉链表存放,共有空指针域个数为N+1
15.若一个算法中的语句频度之和为T(n) = 3720n+4nlogn,则算法的时间复杂
度为_______O(nlogn)_________ 。

16.已知有向图的邻接矩阵,要计算i号结点的入度,计算方法是:
将第i列累加。

17.深度为6(根深度为1)的二叉树至多有63个结点。

18.一棵具有n个叶子结点的哈夫曼树中,结点总数为2n-1。

19.设单链表结点的定义如下:
struct node{
int data,
struct node *next;
};
要在一个单链表中p所指结点之后插入一个子链表,子链表第一个结点的地址为s,子链表最后一个结点的地址为t, 则应执行操作:
t->next=p->next;________和_________ p->next=s;。

20.设单链表结点的定义如19题,现有一个含头结点的单链表,头指针为head,
则判断该单链表是否为空表的条件为head->next==NULL。

21.n个顶点的连通无向图至少有n-1条边。

22.在顺序存储结构的线性表中插入一个元素,平均需要移动n/2个元
素.
三、应用题:(本大题共4小题,每小题8分,共32 分)
请在答题纸相应的位置上填写正确答案。

写在试卷上不得分。

23.已知有向图如图1所示:
(1)写出顶点B的度(2分);
(2)写出从结点D 开始的两个广度优先搜索序列(2分); (3)画出该图的邻接表(4分)。

解答:
(1)顶点B 的度:_______3________ (2分)
(2)_________DBCA______和_____DCBA______ (2分) (3)(4分
)

24. 已知二叉树的中序序列为DBGEAFC ,后序序列为DGEBFCA ,画出对应的二叉树。

解答:
A / \
B C
/ \ / D E F / G
图 1
A C
B
D
25.图2表示一个地区的通讯网,边表示城市间的通讯线路,边上的权值表示架
设线路花费的代价,请画出该图的最小代价支撑树,并计算最小代价支撑树的权。

图2
解答:
(每条边1分,画方框的两条边任选一条)
最小代价支撑树的权=56 (3分)
26. 设一个闭散列表具有10个桶,散列函数H(x)=x%7,若元素输入顺序为:
{50,42,85,22,76,19,34,68},解决冲突用线性重新散列技术,要求画出构造好的散列表。

解答:(8分,第二行每个数字1分)
0 1 2 3 4 5 6 7 8 9
42 50 85 22 19 76 34 68
四、算法设计(本大题共2小题,第27小题10分,第28小题12分,共22 分)请在答题纸相应的位置上填写正确答案。

写在试卷上不得分。

27.二叉搜索树T用二叉链表存储结构表示,其中各元素的值均不相同。

编写算法,按递减顺序打印T中各元素的值。

结点结构定义如下:
typedef int TreeItem;
typedef struct btnode *btlink;
typedef struct btnode{
TreeItem data;
btlink left, right;
}BTNODE;
解答:
void f(btlink t) { // 或void f(BTNODE *t)
if(t){
f(t->right);
printf("%d ",t->data);
f(t->left);
}
}
28. 阅读下面程序,其功能是调整线性表中的元素,将所有奇数放在表的左边,将所有偶数放在表的右边。

请填空完成该程序(每空1分,共12分)#define MAXSIZE 100
typedef int ElemType;
typedef struct;{
ElemType elem[MAXSIZE];/*用于保存线性表各元素值*/
int last;/*用于保存elem数组末元素下标*/
}SeqList;
void AdjustSqList(SqList*L){
ElemType temp;
int i=0,j= (1) ;
while(i<j){
while(L->elem[ (2) ]%2!=0&& (3) )
i++;
while(L->elem[ (4) ]%2==0&& (5) )
j++;
if( (6) )break;
temp=L->elem[i];
L->elem [i]= (7) ;
L->elem [j]= (8) ;
}
}
void main()
SeqList (9) ;
int r,I;
sq=( (10) )malloc (sizeof(SeqList));
printf("请输入线性表的长度: ");
scanf("%d",&r);
sq->last= (11) ;
printf("请输入线性表的各元素值:\n");
for(i=0;i<=sq->;i++) scanf ("%d",& (12) );
AdjustSqlist(sq);
}
解答:(每空1分,共12分,大小写不能错)
⑴、_______ L->last _____________ ⑵、_______ i ______________________ ⑶、_______ i<L->last或i<j______ ⑷、_______ j ______________________ ⑸、_______ j>0或i<j_____________ ⑹、_______ i>=j ___________________ ⑺、_______ L->elem[j]__________ ⑻、______ temp __________________ ⑼、_______*sq _________________ ⑽、_______SeqList *_____________ ⑾、_______ r-1_________________ ⑿、_______sq->elem[i]____________
第三部分关系数据库与SQL语言(共100分)
一、单项选择题(本大题共20小题,每小题2分,共40分)
在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。

写在试卷上不得分。

1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者的关系是
A.DBS包括DB和DBMS
B.DBMS包括DB和DBS
C.DB包括DBS和DBMS
D.DBS就是DBMS,包括DB
2. 在关系理论中称为”元组”的概念,在关系数据库中称为
A.实体
B.属性
C.行
D.字段
3. 在关系数据库中,能对数据进行查询、插入、修改和删除操作的功能称为
A.数据定义功能
B.数据管理功能
C.数据控制功能
D.数据操纵功能
4. 下列可用来实现表结构修改的命令是
A.ALTER
B.CREATE
C.UPDATE
D.DROP
5. 关系数据库中,用户共同视图是数据库三级模式结构中的
A.模式
B.概念模式C,外模式 D.存储模式
6. 在一个关系中,有可能用来唯一标识一个元组的对象,我们称这个对象为
A.主码
B.候选码
C.主属性
D.外码
7. 下列说法正确的是
A.几个域做笛卡尔积运算的结果是一个集合,几个关系做广义笛卡尔积运算的结果不是一个集合
B. 几个域做笛卡尔积运算的结果不是一个集合,几个关系做广义笛卡尔积运算的结果是一个集合
C. 几个域做笛卡尔积运算,运算的结果是一个新的域
D. 几个关系做广义笛卡尔积运算,运算的结果是一个新的域
8. 数据字典中不包括的内容有
A.数据项
B.数据结构
C.数据流
D.数据操纵
9. 数据的结构是以一个”二维表框架”组成的集合,这样的模型是
A.关系模型
B.层次模型
C.网状模型
D.实体联系模型
10. 关系数据库对数据的检索操作不包括
A.投影
B.连接
C.比较
D.选择
11. 关系R中的所有属性都是主属性,则R的最高范式是
A.INF
B.2NF
C.3NF
D.无法确定
12. 如下表所示的关系T,T是R和S做运算的结果,则R和S做的运算可能是
R.A R.B R.C S.A S.B S.C
a b c a b c
b a
c a b c
c a b a b c
a b c c a b
b a
c c a b
c a b c a b
A.R∩S
B.R-S
C.R∪S
D.R×S
13. 把局部E-R图合并成全局E-R图可能出现冲突,下列不属于合并冲突的是
A.属性冲突
B.语法冲突
C.结构冲突
D.命名冲突
14. 在E-R模型中,用来表示属性的图形是
A.椭圆形
B.平行四边形
C.菱形
D.矩形
15. 下列有关视图的说法,正确的是
A.视图是虚拟表,它可以用来存储数据
B.视图中所使用的表被删除,则此视图无法查询到数据
C.视图可以用来查询数据,而且一定可以通过视图修改相应表数据
D.视图只能用来查询数据,而无法通过视图修改相应表数据
16. 有一SQL语句”CRANT SELECT ON student TO User1 WITH CRANT OPTION”,其中”WITH CRANT OPTION”的作用是
A.将系统权限授予User1
B.允许User1将权限再授予其他用户
C.暂时取消User1的所有权限
D.将超级管理员的权限授予User1
17. 下列对于Delete命令的描述正确的是
A.可以用来删除关系
B.可以用来删除数据库模式
C.Delete和DROP等价
D.可以用来删除表数据
18. 下列函数依赖关系正确的是
A.若X→Y,WY→Z,则XW→Z
B.若X∈Y,则X→Y
C.若XY→Z,X→Y,则Y→Z
D.若X∩Y=Ø,则X→Y
19. 在一个关系R中,下列说法正确的是
A.主属性只有一个
B.主属性的个数一定和候选码个数相同
C.主属性可以有多个
D.主属性的个数一定和主码个数相同
20. 同一个关系模式的任意两个元组值
A.必须完全相同
B.主属性列必须相同
C.不可完全相同
D.非主属性列必须相同
二、填空题(本大题共9小题,每空2分,共20分)
请在答题纸相应的位置上填上正确答案。

写在试卷上不得分。

21. 数据模型是现实世界数据特征的抽象,数据模型通常由数据结构、
数据操纵、数据的约束条件三要素组成。

22. 在数据库设计的各个阶段中,关系模式设计是在逻辑结构设计阶段完成的
23. 设关系R和S的元数分别是2和5,关系T是R与S广义笛卡尔积的结果,即T=R×S,则T的元数是 10
24. 数据库系统的三级模式结构中,将模式和内模式分开,保证了数据的物理独立性
25. 自然连续是在广义笛卡尔积中选出同名属性上符合相等条件的元组,再进行
投影,并且去掉重复的同名属性,组成新的关系。

26. 在关系模式R(姓名、年龄、职位、出生日期)中,最有可能作为主关键字的属性是职位
27.若属性A是关系R的主属性,则属性A不能取空值,这是实体
完整性的体现。

28. 在非关系模型中对数据的操作,一次操作内容是一次记录:在关系模型中对数据的操作,一次操作内容是集合
29. 若要创建一个唯一索引,需要使用关键字UNIQUE来表示唯一。

三、根据题意,写出实现以下查询的SQL语句(本大题共25分)
请在答题纸相应的位置上填上正确答案。

写在试卷上不得分。

30. 某图书馆的数据库有如下关系:读者R、书籍B、出版社P;
读者借阅书籍产生新的关系“借阅RB”;
一个出版社可以出版多本书籍,一本书籍只能由一个出版社出版;
关系模式如下:
R(Rid,Rname,RIDcard,Rphone),属性分别表示:读者编号、读者姓名、读者身份证号、读者电话;
B(Bid,Bname,Bauthor,BpublishDate,Bprice,Pid),属性分别表示:书籍编号、书籍名称、作者、出版日期、书籍价格、出版社编号;
P(Pid,Pname),属性分别表示:出版社编号、出版社名称;
RB(RBid,Rid,RBborrowDate,RBstate),属性分别表示:借阅编号、读者编号、书籍编号、借阅日期、借阅状态;
(1)为了提高查询速度,需要在RB表上通过Rid和Bid两个字段建立一个索引,索引名1X_RB,请写出创建此索引的SQL语句(4分)(2)为了方便查询出读者、书籍和借阅表的数据,请通过R、B和RB三个关系做内连接操作,创建一个视图,视图名为VIEW_RB,请写出创建
此视图的SQL语句(4分)
(3)通过VIEW_RB查询出被借阅次数超过(包括)100次的书籍名称。

(在书籍B中Bname属性值是唯一的)(4分)
(4)查询出有借阅过书籍编号为’B001’号和’B002’号两本书的读者姓名和读者电话。

(4分)
(5)查询出书籍名称中包含有’数据库’三个字符的所有书籍名称和作者。

(3分)
(6)请把读者编号为’R012’的读者电话修改为’0123-12345678’。

(3分)(7)查询出’福建出版社’出版的价格最贵的3本书的书籍名称和书籍价格。

(3分)
①(4分)
create index IX_RB on RB(Rid,Bid)
②(4分)
create view VIEW_RB
as select R.*,B.*,RBid,RBborrowDate,RBstate from R,B,RB
where R.Rid=RB.Rid and B.Bid=RB.Bid
③(4分)
select Bname
from VIEW_RB
group by Bname having count(*)>=100
④(4分)
法一:
select Rname,Rphone
from R
where Rid in
(select Rid
from RB
where Bid='B001')
and Rid in
(select Rid
from RB
where Bid='B002')
法二:
select Rname,Rphone
from R,RB a,RB b
where R.Rid=a.Rid and a.Rid=b.Rid and a.Bid='B001' and b.Bid='B002'
⑤(3分)
select Bname,Bauthor
from B
where Bname like '%数据库%'
⑥(3分)
update R
set Rphone='0123-12345678'
where Rid='012'
⑦(3分)
select top 3 Bname,Bprice
from B,P
where B.Pid=P.Pid and Pname='福建出版社'
order by Bprice desc
四、计算题(本大题共2小题,第31题6分,第32题9分,共15分)请在答题纸相应的位置上填上正确答案。

写在试卷上不得分。

31. 设有关系R(V,W,X,Y,Z),各个属性的函数依赖集合有
F={WX→Y,Z→V,X→Z},问:
(1) 关系R 的候选码是什么?(1分)
(2) 关系R 的范式等级是什么?(1分)
(3) 关系R 时候达到3NF ?如果没有,请把关系R 进行分解,使分解后的
关系达到3NF ,写出分解后的关系。

(4分)
①(1分)
R 的候选键为WX
②(1分)
在R 中非键属性对键属性存在部分函数依赖,所以NF R 1∈
③(4分)
R 没有达到3NF ,因为R 的最小函数依赖集为F={WX→Y ,Z→V ,X→Z},所以R 分解到3NF :{R 1(W ,X ,Y ),R 2(X ,Z ),R 3(Z ,V )}
32. 使用关系代数描述下列查询:(关系数据库模式同第30题)
(1) 查询借阅状态为’借出’的书籍名称。

(3分)
(2) 查询出’张三’所借阅过的所有书籍名称。

(3分)
(3) 查询出有借阅过书籍编号为’B003’,但没有借阅过书籍编号为’B009’
书籍的读者姓名和读者电话。

(3分)
①(3分)
()B RB RBstate Bname ∞=''借出δπ
②(3分)
()B RB R Rnam e Bnam e ∞∞=''张三δπ
③(3分)
)))()((('009''003',RB RB R B Bid Rid B Bid Rid Rphone Rnam e ==-∞δπδππ。

相关文档
最新文档