解决方案 »

  1.   

    --部分已经做出解释,请仔细看注释,如果想深入学习数据库,楼主还需努力
    -- 1.使用SQL语句完成如下操作:
    --(1)建立描述学校教务的数据库(JWDB),该数据库包含单一的关系模式Student,其包含学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程号(Cno)和成绩(Grade)。
    create database JWDB
    create table Student
    (
    Sno char(7) not null,
    Sdept char(10),         --建议数据类型除了字符串长度规定一致,最好用varchar()
    Mname char(10),
    Cno char(3) not null,   
    Grade int
    )--(2)请问Student关系模式的候选码是什么?使用SQL语句为Student创建主键。
    candidate key:(Sno,Cno)。alter table Student
    add constraint pk_sno_cno   --此处修改
    primary key(Sno,Cno)--(3)往Student中插入如下实例数据:
    --Sno Sdept Mname Cno Grade
    --S1 电子商务系 张明 C1 95
    --S2 电子商务系 张明 C2 90
    --S3 电子商务系 张明 C1 88
    --S4 电子商务系 张明 C1 70
    --S5 计算机系 曾刚 C1 78
    insert into Student
    values('S1','电子商务系','张明','C1',95)
    insert into Student
    values('S2','电子商务系','张明','C2',90)
    insert into Student
    values('S3','电子商务系','张明','C1',88)
    insert into Student
    values('S4','电子商务系','张明','C1',70)
    insert into Student
    values('S5','计算机系','曾刚','C1',78)--(4)假设电子商务系系主任变成“张三”,请用SQL语句完成相应操作。请问这种操作是否有不合理的地方?
    update Student
    set Mname='张三'
    where Sdept='电子商务系'--(5)假设学校新成立外语系,并任命李四为系主任,请用SQL语句完成相应操作。请问这种操作是否有不合理的地方?
    --主键不能插入空值的,主键是用来辨识一条记录的唯一性的,是非空属性
    insert into Student
    values(null,'外语系','李四',null,null)   
    该操作不合理。不能将值null插入列'Sno','Cno'中,因为第(2)题已将'Sno','Cno'设为主键,而主键值不能为null,插入失败。--(6)假设学生S5需要退选C1课程,请用SQL语句完成相应操作。请问这种操作是否有不合理的地方。
    update Student
    set Cno=null  --cno=''
    where Sno='S5'
    该操作不合理。不能将值null插入列'Cno'中,由第(2)题可只该列不允许有null值,update失败。--2.在上述数据库中,找出Student关系模式中的基本函数依赖关系。
    (Sno,Cno)→Grade--3.尝试消除Student关系模式中不合理的数据冗余和操作异常问题,为什么?
    Student(Sno,Sdept,Mname)
    SC(Sno,Cno,Grade)--4.已知关系模式R<U,F>,其中U={W,X,Y,Z},F={X→Z,WX→Y}。求(WX)F+。
    令A=WX,由于函数依赖WX→Y,左边的所有属性都在A中,所以可以把右边的Y添加到A中,这时A=WXY;
    其次考虑函数依赖X→Z,左边X在A中,右边Z不在A中,将其添加到A中,此时A=WXYZ;
    上述方法再不能向A中添加属性,所以得到(WX)F+=WXYZ--5.已知关系模式R<U,F>,其中U={A,B,C,D,E},F={AB→C,B→D,C→E,EC→B,AC→B}.求(AB)F+。
    令X=AB,由于函数依赖AB→C,左边的所有属性都在X中,所以可以把右边的C添加到X中,这时X=ABC;
    其次考虑函数依赖B→D,C→E,AC→B,左边B,C,AC均在X中,右边D,E不在X中,将其添加到X中,此时X=ABCDE;
    再考虑函数依赖EC→B,左边EC在X中,右边B也在X中,不能向X中添加属性,所以得到(AB)F+=ABCDE