例2.判断关系模式sc(sno, sname cnc, grade是否满足2NF; 第一步:判断sc是否为第一范式; 第二步:确定候选码(snηo,cno) 第三步:确定所有函数依赖有:sno→ sname Sno. cno sname, (sno, cno grade; 得出结论:和2NF定义相违背,故sc不是2NF;
例2. 判断关系模式 sc(sno,sname,cno,grade)是否满足2NF; 第一步:判断sc是否为第一范式; 第二步:确定候选码(sno,cno); 第三步:确定所有函数依赖有: sno→sname , (sno,cno) sname ,(sno,cno) grade; 得出结论:和2NF定义相违背,故sc不是2NF;
一个关系模式不是2NF,就会产生以下问题(S-L-C): (1)插入异常:假设Sno=95102, Sdept=IS,Sloc=N的学生还未 选课,因课程号是主属性,因此该学生的信息无法插入SLC。 (2)删除异常:假定某个学生本来只选修了3号课程这一门课。现在 因其他原因,3号课程也不选修了。因课程号是主属性,此操作将 导致该学生信息的整个元组都要删除。 (3)数据冗余度大:如果一个学生选修了10门课程,那么他的 Sdept 和Sloc值就要重复存储了10次。 (4)修改复杂:例如学生转系,在修改此学生元组的 Sdept值的同时, 还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必 须无遗漏地修改K个元组中全部 Sdept、Sloc信息
一个关系模式不是 2NF,就会产生以下问题(S-L-C): (1) 插入异常:假设 Sno=95102,Sdept=IS,Sloc=N 的学生还未 选课,因课程号是主属性,因此该学生的信息无法插入SLC。 (2) 删除异常:假定某个学生本来只选修了3号课程这一门课。现在 因其他原因,3号课程也不选修了。因课程号是主属性,此操作将 导致该学生信息的整个元组都要删除。 (3) 数据冗余度大:如果一个学生选修了10门课程,那么他的Sdept 和Sloc值就要重复存储了10次。 (4)修改复杂:例如学生转系,在修改此学生元组的Sdept值的同时, 还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必 须无遗漏地修改K个元组中全部Sdept、Sloc信息