范例是指数据库设计需要(应该)遵循的原则。

每个范例都用于指定特定的结构或数据需求。——后一范式用于在前一范式得到满足时“强化需求”。

第一范式(1NF):原子性

存储的数据不应被细分。

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

上图学生领域的数据还是可以拆分的,应该如下:

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

第二种范式(2NF):独特性

必须认识到,每一行数据都有独特的区别特征,不能有部分依赖性。

通常,向表中添加主键(这也是推荐的做法)可以使其“唯一可区分”。

只要表有主键,其他非主键就必须依赖主键。

部分依赖是指依赖于某些组合主键字段的非主键字段。

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

虽然这个表满足1NF,但还是有冗余的。主要原因是学生信息和课程信息的冗余。

这个表主要记录学生的成绩,所以可以由(学生的课程)来决定,但是性别、地区、学分是部分依赖的,(学生)可以决定(性别地区),而(课程)可以决定(学分)。因此,为了实现第二种范式,我们需要将这两种部分依赖分开。

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

第三范式(3NF):独立,消除传播依赖。

在有主键的表中,假设主键为A,其他非主键必须依赖主键,例如B依赖A,C依赖A,D依赖A。但同时:如果确定了表中一个字段B的值,就可以确定另一个字段C的值,那么我们说C依赖于B。

然后,就出现了:C靠B,B靠A——。这是传递依赖。

那么消除这种转移依赖的通常方法是将依赖于B的C的数据分离到另一个表中。

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

本表虽然符合2NF,但仍有转学依赖(学生证)(系)(系办公室地址、系办公室电话),故做如下修改:

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

第三个范例的要求是一个表只记录一种数据。

通常在实践中,只要“一个表只存储一种数据”,满足3范式基本上就可以实现。

另外,范式并不是绝对的要求,有时候我们会(需要)为了数据使用的方便而故意违背范式。

快三导师带计划赚钱app。

在有主键的表中,假设主键为A,其他非主键必须依赖主键,例如B依赖A,C依赖A,D依赖A。但同时:如果确定了表中一个字段B的值,就可以确定另一个字段C的值,那么我们说C依赖于B。

然后,就出现了:C靠B,B靠A——。这是传递依赖。

那么消除这种转移依赖的通常方法是将依赖于B的C的数据分离到另一个表中。

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

本表虽然符合2NF,但仍有转学依赖(学生证)(系)(系办公室地址、系办公室电话),故做如下修改:

数据库三范式通俗解释(证明第三范式一定是第二范式)-冯金伟博客园

第三个范例的要求是一个表只记录一种数据。

通常在实践中,只要“一个表只存储一种数据”,满足3范式基本上就可以实现。

另外,范式并不是绝对的要求,有时候我们会(需要)为了数据使用的方便而故意违背范式。