1NF:所有属性都是不可分的基本数据项
比如:
个人信息表中有字段:id,姓名,性别,地址。
如果还需要把地址拆分成:省、市、区。则不满足1NF的定义。
2NF:满足1NF,并且每个非主属性完全依赖于码
要求实体的属性完全依赖于主关键字。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性, 如果存在,那么这个属性和主关键字的这一部分应该分离出来形成
一个新的实体。
比如说学生成绩表中
主键 studentId、courseId
(studentId、courseId、姓名,性别,省、市、区、分数、院校id、院校地址、院校电话)
那么该表如果有只依赖studentId,而不依赖courseId的属性,比如学生个人信息,则应该把学生个人信息分离出来形成新的实体。
符合2NF的设计应该是
学生表:
(studentId、姓名,性别,省、市、区、院校id、院校地址、院校电话 )
学生成绩表:
(studentId、courseId、分数 )
3NF:满足2NF,不存在非主属性对码的传递函数依赖
上述学生表就需要拆
学生表:
(studentId、姓名,性别,省、市、区、院校id )
院校信息表
(院校id、院校地址、院校电话 )