数据库综合题

来源:互联网 发布:淘宝黑变白 编辑:程序博客网 时间:2024/05/21 18:57

如何创建索引?(必考

1:在s表的sname(姓名),sex(性别列上建立一个聚集索引,S表中的记录将按照SNAME值的降序存放

   create  clustered  index   stusname  on  s(sname,sex  desc);    

2:在emp表的last_name列上创建一个唯一性索引

create  unique  index  emp_lname_index  on  emp(last_name)  


习题
设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。
试回答下列问题:
 ⑴ 根据上述规定,写出模式R的基本FD和关键码;
⑵ 说明R不是2NF的理由,并把R分解成2NF模式集;
⑶ 进而分解成3NF模式集。 

⑴ 基本的FD有三个:
(职工编号,日期)→ 日营业额   
  职工编号 → 部门名   
  部门名 → 部门经理   
  R的关键码为:(职工编号,日期) 

⑵ R中有两个这样的FD:   
 (职工编号,日期)→(部门名,部门经理)   
  职工编号 →(部门名,部门经理)
  可见前一个FD是局部依赖,所以R不是2NF模式。

R应分解
    Rl(职工编号,部门名,部门经理)    
    R2(职工编号,日期,日营业额)

⑶ R2已是3NF模式。在R1中,存在两个FD:
      职工编号 → 部门名 
      部门名 → 部门经理
     “职工编号 → 部门经理”是一个传递依赖,Rl不是3NF模式。 


  R1应分解成:
  R11(职工编号,部门名)
  R12(部门名,部门经理)
  这样,ρ={R11,Rl2,R2}是一个3NF模式集。


试用SQL查询语句表达下列对教务管理数据库的三个基本表S、SC、C查询:
    ⑴ 统计有学生选修的课程门数。
    ⑵ 求选修4号课程的学生的平均年龄。
    ⑶ 求LIU老师所授课程的每门课程的学生平均成绩。


⑴ SELECT COUNT(DISTINCT CNO)
     FROM SC;


⑵ SELECT AVG(AGE)
   FROM S,SC
   WHERE S.SNO=SC.SNO AND CNO=’4’AND SEX=’F’;


⑶ SELECT C.CNO,AVG(GRADE)
   FROM SC,C
   WHERE SC.CNO=C.CNO AND TNAME=’LIU’;


⑷ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。


   SELECT CNO,COUNT(SNO)
   FROM SC
   GROUP BY CNO
   HAVING COUNT(*)>10
   ORDER BY 2 DESC,1;


⑸ 检索学号比WANG同学大,而年龄比他小的学生姓名。
   SELECT SNAME
   FROM S
   WHERE SNO>ALL(SELECT SNO
                FROM S
                WHERE SNAME=’WANG’
         AND AGE<ALL(SELECT AGE
                     FROM S
                     WHERE SNAME=’WANG’);


⑹ 检索姓名以WANG打头的所有学生的姓名和年龄。
  
   SELECT SNAME,AGE
   FROM S
   WHERE SNAME LIKE ‘WANG%’



⑺ 在SC中检索成绩为空值的学生学号和课程号。


   SELECT SNO,CNO

   FROM SC

   WHERE GRADE IS NULL;






原创粉丝点击