问答题

【说明】 学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授各带有若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。 【问题1】 用E-R图画出此学校的概念模型,用文字写出各实体和联系的属性。 【问题2】 将E-R图转换成关系模型。 【问题3】 指出各关系模型的候选键。

【参考答案】

【问题1】 用E-R图表示的概念模型如下所示。
各实体的属性如......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。# include <stdio. h># define N 12int b[N+1];int pos;int a[9]; * 用于存储诸方格所填入的整数* int AllNum=0; * 统计有多少种填法* int checkMatrix[][3]={ {-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,-1},{4,6,-1},{5,7,-1}};void write(int a[]){ int i, j;for(i=0; i<3; i++){ for(j=0; j<3; j++)printf( %3d , a[3*i+j]);printf( n );}}int isPrime(int m){ int i;if(m==2)return 1;if(m==1 ‖ m%2==0)return 0;for(i=3; i*i<m;){ if(m%i==0)return 0;i+=2;}return 1;}int selectNum(int start){ int j;for(j=start; j<=N; j++)if(b[j])return j;return 0;}int check() *检查填入pos位置的整数是否合理* { int i,j;for(i=0; (j= (1) )>=0; i++)if(!isPrime(a[pos]+a[j]))(2) ;(3) ;}extend () * 为下一方格找一个尚未使用过的整数* { a[ (4) ]=selectNum(1);b[a[pos]]=0;}void change () *为当前方格找下一个尚未使用过的整数(找不到回溯)* { int j;while(pos >=0 && (j=selectNum( (5) ))==0)b[a[pos--]]=1;if(pos<0)return;b[a[pos]]=1; a[pos]=j; b[j]=0;}int find (){ int ok=1;pos=0; a[pos]=1; b[a[pos]]=0;do{if(ok)if(pos==8){ write(a);change();AllNum++; * 统计有多少种填法* }else extend();else change();ok=check();}while(pos>=0);}void main(){ int i;for(i=1; i<=N; i++) b[i]=1;find();prinrf( 共有%d种不同填法! n , AllNum);}