首页 > 编程知识 正文

数据库三范式通俗解释(证明第三范式一定是第二范式)

时间:2023-05-06 00:56:10 阅读:98457 作者:3789

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

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

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

存储的数据不应被细分。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。