数据库三大范式
- 三大范式
第一范式:就是原子性,字段不可再分割;
第二范式:就是完全依赖,没有部分依赖;
【表中必须有一个主键;没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分】
注意,符合第二范式的关系模型可能还存在数据冗余、更新异常等问题。
第三范式:就是没有传递依赖
【数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系】
比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)
这样一个表结构,就存在上述关系。 学号–> 所在院校 --> (院校地址,院校电话)
这样的表结构,我们应该拆开来,如下。
(学号,姓名,年龄,性别,所在院校)–(所在院校,院校地址,院校电话)
- 为什么要用三大范式以及三大范式的意义
数据库的设计范式是数据库设计所需要满足的规范,数据库的规范化是优化表的结构和优化把数据组织到表中的方式,
这样使数据更明确,更简洁。实践中,通常把一个数据库分成两个或多个表并定义表之间的关系以做到数据隔离,添加、
删除和修改某个字段只需要在一个表中进行,接着可以通过定义的关系传递到数据库中剩余的表中(和分层思想的意义所
在很相似)。这样我们可以消除很多错误或垃圾数据出现的机会并减轻更新信息所必要的工作量。
目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,
简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推
3.总结:
事物往往具有多面性,设计范式也会带来一定的麻烦:操作困难,因为需要联系多个表才能得到所需要数据,而且范式
越高性能就会越差。所以使用多高的范式需要权衡利弊,一般在项目中,使用到第三范式也就足够了,性能好而且方便管理数据。