数据库规范化:从第二范式到第五范式
在数据库设计中,规范化是一个重要的概念,它可以帮助我们设计出更加高效、稳定和易于维护的数据库。本文将详细介绍从第二范式(2NF)到第五范式(5NF)的相关知识,并通过具体的例子来说明如何应用这些范式来优化数据库设计。
第二范式(2NF)
第二范式的目标是消除部分依赖。例如,我们有以下两个关系:
- Order (order_numb, customer_numb, order_date)
- Order items (order_numb, item_numb, has_shipped?)
这两个关系对应着 ER 图中的单个实体。在数据库设计中,确定是基于函数依赖还是实体来驱动设计是一个“鸡生蛋还是蛋生鸡”的问题,重要的是 ER 图和关系中的函数依赖要保持一致。数据库设计通常是一个迭代的过程,我们先创建初始设计,然后进行检查、修改,再检查。
这些从原始订单关系创建的新关系消除了原始关系中的异常:
1. 现在可以在客户下单之前插入关于客户的数据。
2. 现在可以在知道订单上的商品之前插入关于订单的数据。
3. 现在可以在商品被订购之前存储关于商品的数据。
4. 可以从订单中删除行项目,而不影响描述该项目、订单本身或商品的数据。
5. 描述客户的数据只存储一次,因此对这些数据的任何更改只需要进行一次,不会出现修改异常。
然而,即使关系处于第二范式,仍然可能存在异常。例如,对于 Item (item_numb, title, distrib_numb, warehous
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



