关于java:面试突击52什么是三范式它有什么用

33次阅读

共计 651 个字符,预计需要花费 2 分钟才能阅读完成。

1. 第一范式

第一范式规定表中的每个列都应该是不可分割的最小单元。比方以下表中的 address 字段就不是不可分割的最小单元,如下图所示:

其中 address 还能够拆分为国家和城市,如下图所示:

这样革新之后,下面的表就满足第一范式了。

2. 第二范式

第二范式是在满足第一范式的根底上,规定表中的非主键列不存在对主键的局部依赖,也就是说每张表只形容一件事件,比方以下订单表就不满足第二范式,它能够拆分为两张独立的表:订单表和商品表。

2.1 不满足第二范式的订单表

PS:下面的表可拆分为两张独立的表:订单表和商品表。

2.2 满足第二范式的表

订单表:

商品表:

3. 第三范式

第三范式是在满足第一范式和第二范式的根底上,规定表中的列不存在对非主键列的传递依赖。比方以下的订单表中的顾客名称就不合乎第三范式,因为它存在了对非主键顾客编号的依赖,如下图所示:

批改之后(合乎第三范式)的表构造如下:

总结

第一范式规定表中的每个列都应该是不可分割的最小单元。第二范式是在满足第一范式的根底上,规定表中的非主键列不存在对主键的局部依赖。第三范式是在满足第一范式和第二范式的根底上,规定表中的列不存在对非主键列的传递依赖。应用数据库三范式的劣势是:表的构造更简略、优雅,表的逻辑和条理性更强,并且应用三范式能够很大水平的缩小表中的冗余数据,很好的节俭了数据库的存储资源。

参考 & 鸣谢

《Offer 来了》

是非审之于己,毁誉听之于人,得失安之于数。

公众号:Java 面试真题解析

面试合集:https://gitee.com/mydb/interview

正文完
 0