关系为:学生选课关系(学号,姓名,课程号,课程名,成绩)
主码为(学号,课程号)
满足第一范式:存在问题:
1,数据冗余。2,插入异常。(如果有学生不选课,那么插入其数据的时候,主码的课程号将无法输入,出现异常)3,删除异常。(当没人选择C语言这门课程的时候,则在删除C语言课程相关元组的时候,会因为没有主码学号而无法完成)没人选C语言这门课程,数据库中怎么会存在C语言有关的元组?
这个关系的操作,可以插入一个没有选课的学生(出现插入异常),但也不会插入一个没有人选的课程吧。就算有人想插入这套数据,也不会成功,关系中不可能会存在没有学号的元组,那么这个1NF的关系怎么会出现上述的这个删除异常呢。3,修改异常。
听他说的是,如果把C修改成C程序设计,有的没修改,有的修改了。
不大明白。
~~~
主码为(学号,课程号)
满足第一范式:存在问题:
1,数据冗余。2,插入异常。(如果有学生不选课,那么插入其数据的时候,主码的课程号将无法输入,出现异常)3,删除异常。(当没人选择C语言这门课程的时候,则在删除C语言课程相关元组的时候,会因为没有主码学号而无法完成)没人选C语言这门课程,数据库中怎么会存在C语言有关的元组?
这个关系的操作,可以插入一个没有选课的学生(出现插入异常),但也不会插入一个没有人选的课程吧。就算有人想插入这套数据,也不会成功,关系中不可能会存在没有学号的元组,那么这个1NF的关系怎么会出现上述的这个删除异常呢。3,修改异常。
听他说的是,如果把C修改成C程序设计,有的没修改,有的修改了。
不大明白。
~~~
不大明白。就算全部修改了你也会 修改表中很多记录。如果分表出来就不一样了,只改一个表的一条记录就行了。
只要我修改足够多的元组,就不会出现修改异常,是么 ?
~~~只是操作繁琐一点~~~
主码为(学号,课程号)
满足第一范式:但是不满足第二范式主码是学号,课程号, 但是姓名只完全依赖于学号, 课程名只完全依赖于课程号,成绩依赖于(学号,课程号)添加的时候,如果一个学生没有选课,但是主码要求学号,课程号,学号是可以得到,但是课程号没有,主码不能非空,因此这条记录插不进去。删除的时候假如要删除课程名,同样的,主键只满足课程号,是不能删除的,你也不能胡乱给一个学号啊,如果你配合一个学号删除,那么这个学生的信息就会消失那么,根据函数依赖,姓名完全依赖于学号,这样就可以分开 学生表(学号,姓名)学号是主键,同样的课程表(课程号,课程名)课程号是主键, 选课关系表(学号,课程号,成绩)其中(学号,课程号)是主键