个人对数据库三大范式的理解
第一范式
概括:列不可分。举个例子,比如我们有一个用来存储地址的属性列,我们存放的具体值是XX省XX市XX镇,其实我们发现,这个值是不是可以考虑拆开存储,也就是XX省、XX市、XX镇分开存,否则就违反了第一范式。
第二范式
概括:消除部分依赖。还是举个例子来说,我们有三个表,学生表、成绩表、科目表,我们取学生表的ID和科目表的ID作为成绩表的联合主键,我们可以说成绩表的分数列就是完全依赖于该表的联合主键的,但是,如果成绩表还存在一个学生姓名列,那么这个学生姓名就是部分依赖于该表的联合主键的,因为它只依赖于学生ID,这也违反了第二范式(如下图)。
第三范式
概括:消除冗余字段。当然,还是举例说明,比如学生表和班级表,在学生表中,除了所属的班级ID之外,还存在属于班级表的列属性 班主任姓名,对于学生表而言,这个班主任姓名就是一个冗余字段,这违反了第三范式(如下图)。