我觉得是二范式sc(sno, sname     ,cno,    g)--〉
sc(sno, cno,  g) +  s(sno, sname )

解决方案 »

  1.   

    你的主键pk是什么??
    sc(sno, sname     ,cno,    g)很重要的。
      

  2.   

    student(sno, sname)
    student_grade(sno, cno, g)
      

  3.   

    student(sno, sname,...)    --学生表(学号,姓名,...)
    sc(cno,name,g,sno,...)     --成绩表(课程号,课程名称,成绩,学号,...)以学号作关联,一对多。属第二范式。
    一般设计数据达到第三范式已足够了.
      

  4.   

    sc(sno, sname     ,cno,    g)===〉sc(sno, cno,  g) +  s(sno, sname )pk(s)=sno
    pk(sc)=sno+cno已经是三范式了!
      

  5.   

    一个关系,会因为主键得不同而范式不同吗?
    如:
    R(a,b,c,d,e)
    a->d,
    a->e,
    (b,c)->a
    (a,c)->bif select (a,c) as primary key then (a,c)-(p)->d(d部分依赖于主键) :1nf
    if select (b,c) as primary key then  d传递依赖于(b,c)  :2NF 分析有错吗?
      

  6.   

    应该是3NF了,学号,课号联合才能作为主键,这样一来肯定到3NF了,至于到每到BCNF还需要再看
      

  7.   

    to TrampTramp(流浪汉):既然pk(s)=sno,pk(sc)=sno+cno,也就是sno->sname,sno cno->g,那么为什么那个不是BCNF呢?
      

  8.   

    既然姓名是不重复的,觉得应该是BCNF.
      

  9.   

    再顶一下吧
    sc(sno, sname,cno,g)的函数依赖为sno cno ->g,sno->sname,码应该为sno+cno,由于sname部分函数依赖于码,所以这个不是2NF,只是1NF.
    分解成s(sno,sname)+sc(sno,cno,g).函数依赖不变,sno是s的码,sno cno是sc的码,所以是BCNF.