一个关系,会因为主键得不同而范式不同吗? 如: 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 分析有错吗?
应该是3NF了,学号,课号联合才能作为主键,这样一来肯定到3NF了,至于到每到BCNF还需要再看
to TrampTramp(流浪汉):既然pk(s)=sno,pk(sc)=sno+cno,也就是sno->sname,sno cno->g,那么为什么那个不是BCNF呢?
sc(sno, sname ,cno, g)很重要的。
student_grade(sno, cno, g)
sc(cno,name,g,sno,...) --成绩表(课程号,课程名称,成绩,学号,...)以学号作关联,一对多。属第二范式。
一般设计数据达到第三范式已足够了.
pk(sc)=sno+cno已经是三范式了!
如:
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 分析有错吗?
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.