关系为:学生选课关系(学号,姓名,课程号,课程名,成绩) 
主码为(学号,课程号)
满足第一范式:存在问题:
1,数据冗余。2,插入异常。(如果有学生不选课,那么插入其数据的时候,主码的课程号将无法输入,出现异常)3,删除异常。(当没人选择C语言这门课程的时候,则在删除C语言课程相关元组的时候,会因为没有主码学号而无法完成)没人选C语言这门课程,数据库中怎么会存在C语言有关的元组?
这个关系的操作,可以插入一个没有选课的学生(出现插入异常),但也不会插入一个没有人选的课程吧。就算有人想插入这套数据,也不会成功,关系中不可能会存在没有学号的元组,那么这个1NF的关系怎么会出现上述的这个删除异常呢。
3,修改异常。
   听他说的是,如果把C修改成C程序设计,有的没修改,有的修改了。
   不大明白。
~~~

解决方案 »

  1.   

     听他说的是,如果把C修改成C程序设计,有的没修改,有的修改了。
      不大明白。就算全部修改了你也会 修改表中很多记录。如果分表出来就不一样了,只改一个表的一条记录就行了。
      

  2.   

    .
    只要我修改足够多的元组,就不会出现修改异常,是么 ?
    ~~~只是操作繁琐一点~~~
      

  3.   

    把他分到原子最小不可再分就就到位啦!
      

  4.   

    关系为:学生选课关系(学号,姓名,课程号,课程名,成绩) 
    主码为(学号,课程号)
    满足第一范式:但是不满足第二范式主码是学号,课程号, 但是姓名只完全依赖于学号, 课程名只完全依赖于课程号,成绩依赖于(学号,课程号)添加的时候,如果一个学生没有选课,但是主码要求学号,课程号,学号是可以得到,但是课程号没有,主码不能非空,因此这条记录插不进去。删除的时候假如要删除课程名,同样的,主键只满足课程号,是不能删除的,你也不能胡乱给一个学号啊,如果你配合一个学号删除,那么这个学生的信息就会消失那么,根据函数依赖,姓名完全依赖于学号,这样就可以分开 学生表(学号,姓名)学号是主键,同样的课程表(课程号,课程名)课程号是主键, 选课关系表(学号,课程号,成绩)其中(学号,课程号)是主键
      

  5.   

    或者这样说,学生包括(学号,姓名)他们是一个关系,课程(课程,课程号),选课(学号,课程号,成绩)是三个关系吧,如果要美添加其中一个关系的时候都要添加其他两个关系,是否冗余,要删除其中一个关系的时候都要删除其余的关系是否可靠,删除一个学生的时候,只用删课程的成绩即可,要把课程名删掉是否合适,添加一个学生的时候,还要考虑是否有选修课是否多余