问答题已知有如下关系模式:
T1({{U}}a1{{/U}},a2,a3,a5),T2({{U}}a3{{/U}},a4),T3({{U}}a5{{/U}},a6),T4({{U}}a3,a5{{/U}},a7),其中带下划线的属性标识为所在关系模式的主码,T1中的a3是参照T2的外码,T1中的a5是参照T3的外码,T4中的a3是参照T2的外码,T4中的a5是参照T3的外码。
请将上述关系模式用适当的ER图表示出来,并用下划线标注出作为实体主码的属性。
问答题知识发现主要由三个步骤组成,它们是_______、数据挖掘、结果的解释评估。
问答题在SQL Server 2008中,若要提取游标curl当前行指针所指的前一行数据,使用的选项是:FETCH_______FROM cur1
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序已经给出。
程序中已定义数组:a[200],b[200];已定义变量:cnt。
请勿改动数据文件N.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void jsVal()
{
}
void readDat()
{
int i;
FIIE *fp;
fp=fopen("IN.DAT","r");
for (i=0;i<MAX;i++)
fscanf(fp,"%d,",
fclose(fp);
}
void writeDat()
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d/n",b[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d/n",cnt);
for(i=0;i<cnt;i++)
printf("%d",b[i]);
printf("/n");
writeDat();
}
问答题设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat(),把结果P输出到文件out.dat中。
设n=100,s=1,m=10。
①将1到n个人的序号存入一维数组p中;
②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
③重复第②步直至圈中只剩下p[1]为止。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include <stdio.h>
#define N 100
#define S 1
#define M 10
int p[100], n, s, m;
void WriteDat(void);
void Josegh(void)
{
}
void main()
{
m=M;
n=N;
s= S;
Josegh ();
WriteDat ();
}
/*把结果p输出到文件out.dat中*/
void WriteDat(void)
{
int i;
FILE *fp;
fp=fopen("out.dat", "w");
/*以逆顺的方式,以10个数据为一组把数组p[i]输出到屏幕和文件out.dat中*/
for (i=N-l; i>=0; i--)
{
printf("%4d ", p[i]);
fprintf(fp, "%4d", p[i]);
if (i%10 == 0) //如果i能被10整除,则输出一个回车换行符
{
printf ("/n");
fprintf(fp, "/n");
}
}
fclose(fp);
}
问答题在SQL Server 2008中,设有教师表(教师号,姓名,所在部门号,职称)和部门表(部门号,部门名,高级职称人数)。请编写满足下列要求的后触发型触发器(设触发器名字为tri_zc)。
每当在教师表中插入一名具有高级职称(“教授”或“副教授”)的教师时,或者将非高级职称教师的职称更改为高级职称时,均修改部门表中相应部门的高级职称人数。(假设一次操作只插入或更改一名教师的职称)。
问答题在数据仓库中,元数据主要分为_________元数据和业务元数据两类。
问答题在SQL Server 2008中,每个数据页可存储8060字节的数据。设表T有10000行数据,每行占用4031字节,则存储该表数据大约需要_______MB存储空间,其空间利用率大约是_______%。(存储空间和空间利用率均保留到整数,小数点后按四舍五人处理)
问答题现要查询C01课程考试成绩最高的前3名学生的学号和成绩(包括并列的情况)。请补全下列语句:SELECT_________3学号,成绩FROM选课表WHERE课程号='C01'ORDER BY成绩DESC
问答题有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为pUpdate),更改规则如下:“电脑”类商品降价10%,“电视”类商品降价6%,“冰箱”类商品降价3%,其他商品不降价。以商品的分类作为输入参数,假设“分类”为字符串类型,长度最多为6个汉字。如果商品表中没有用户指定的分类,则用输出参数返回字符串“指定的分类不存在”;如果用户指定的分类存在,则用输出参数返回字符串“修改已成功”。
问答题某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用SQL Server
2008数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用SQL Server
2000,数据结构与新系统不完全一致。因此需要把数据从SQL Server 2000导入到SQL Server
2008中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在3小时内完成。
问答题使用约束可以保证数据库中数据的正确性,其中_______约束允许出现空值但不允许出现重复值。
问答题事务是由一系列操作组成的,事务的执行表现为事务中各个操作的执行。每个事务应具有结束操作。当一个事务发生故障需要终止并取消所有已执行的数据修改时应执行_________操作。
问答题设在SQL Server 2008某数据库中,要设置不允许用户U1获得对表T数据的删除权限,请补全实现该授权操作的S语句:_________ON T TO U1;
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 例如,原文:dAe,BfC. CCbbAA 结果:,.ABCdef AACCbb 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharA(void) void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharA(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<maxline; i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
问答题函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。 例如,原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<string.h> #include<stdlib.h> char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void ConvertCharA(void) void main() system("CLS"); if(ReadDat()) printf("数据文件IN5.DAT不能打开!/n/007"); return; ConvertCharA(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN5.DAT","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!NULL) P=strehr(xx[i],'/n'); if(P) *P=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; system("CLS"); fp=fopen("OUT5.DAT","w"); for(i=0;i<maxline;i++) prinff("%s/n",xx[i]); fprinff(fp,"%s/n",xx[i]); fclose(fp);
问答题函数ReadDat()实现从in.dat文件中读取20行数据并存放到字符串数组xx中(每行字符串长度均小于80)。请编写函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到out.dat文件中。 条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 例如: 位置0 1 2 3 4 5 6 7 8 源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串h g f e d C b a 8 7 6 5 9 4 3 2 1 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> char xx[20][80]; void jsSort() void ReadDat() FILE *in; int i=0; char *p; in=fopen("in.dat","r"); while(i<20&&fgets(xx[i],80,in)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; fclose(in); void WriteDat() FILE *out; int i; out=fopen("out.dat","w"); for(i=0;i<20; i++) printf("%s/n",xx[i]); fprintf(out,"%s/n",xx[i]); fclose(out); void main() ReadDat(); jsSort(); WriteDat();
问答题为避免活锁现象的发生,数据库管理系统采用_________策略处理事务的加锁请求。
问答题已知在IN.DAT文件中存有若干个(<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编写函数CalValue(),其功能是:(1)求出这个文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到OUT.DAT文件中。
注意:部分程序已经给出。
请勿改动主函数main()、读函数ReadDat0和写函数writeDat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200
int xx[MAXNUM];
int totNum=0;
int totCnt=0;
double totPjz=0.0;
int ReadDat(void);
void writeDat(void);
void CalValue(void)
{
}
void main()
{
int i;
for (i=0;i<MAXNUM;i++)
xx[i]=0;
if(ReadDat())
{
printf("数据文件IN.DAT不能打开!/007/n");
return;
}
CalValue();
printf("IN.DAT文件中的正整数个数=%d个/n",totNum);
printf("符合条件的正整数个数=%d个/n",totCnt);
printf("平均值=%.2f/n",totPjz);
writeDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
if ((fp=fopen("IN.DAT","r"))==NULL)
return 1;
while (!feof(fp))
fscanf(fp,"%d,",
fclose(fp);
return 0;
}
void writeDat(void)
{
FILE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n%d/n%6.2f/n",totNum,totCnt,totPjz);
fclose(fp);
}
问答题在进行某学校教务管理系统的数据库设计时,数据库设计人员设计了如下几个关系模式:
系(系号,系名),系号为主码
学生(学号,姓名,所在系号),学号为主码
课程(课程号,课程名,开课系号),课程号为主码
选课(学号,课程号,选课时间),学号和课程号为主码
开发人员在将关系模式实施到SQL Server 2008的“教务”数据库时,使用了如下表结构定义语句:
CREATE TABLE 系 (
系号 varchar(10) NOT NULL,
系名 varchar(100)
)
CREATE TABLE 学生 (
学号 varchar(50) NOT NULL,
姓名 varchar(50),
所在系号 varchar(10)
)
CREATE TABLE课程 (
课程号 varchar(50) NOT NULL,
课程名 varchar(100),
开课系号 varchar(10)
)
CREATE TABLE 选课 (
学号 varchar(50) NOT NULL,
课程号 varchar(50) NOT NULL,
选课时间 datetime
)
在执行如下查询语句时发现执行效率很低:
SELECT * FROM 选课 JOIN 学生 ON 学生.学号 = 选课.学号
JOIN 系 ON 系.系号 = 学生.所在系号
JOIN 课程 ON 课程.课程号 = 选课.课程号
WHERE 系.系号="012"
AND convert(varchar(10), 选课时间, 120) >="2010-01-01"
