1 经典示例 先来看一个经典的例子,在一些商城系统里,要显示已购买的订单,一般会显示订单号、下单时间、订单金额、商品名称等,如下图。 正常我们如果按三大范式来设计表,应该是下面这样,包含【订单表】和【商品表】,在【订单表】中用【商品ID】来关联【商品表】 但是这样设计的话,在订单详情页面,要显示商品名称的话,就得用【订单表】+【商品表】关联查询 2 字段冗余设计 上面两张表的设计,从三大范式来说是合理的。但是在项目实际中,查看订单详情是很频繁的操作,每次操作,系统就得关联【订单表】+【商品表】查询。但其实我们只会在订单详情里显示【商品名称】这一个字段,所以我们可以在【订单表】里增加一个【商品名称】,这样我们要显示订单详情时,只需要查询【订单表】就可以了,如下: 3 字段冗余优缺点 缺点: 扩展: 优点: 4 什么时候使用字段冗余 只要记住一句话就可以了:查多改少的场景,适合用字段冗余。还是上面的例子:订单详情的查询很多,但是商品名称的修改很少,适合将商品名称冗余到订单表中 5 总结 数据库字段冗余是很常见的数据库设计方案,基本上我接触过的项目都不可避免的用到字段冗余设计,已经工作的小伙伴们也可以在自己的项目里找找是否有字段冗余的设计。 |
|
来自: 千锋Python学堂 > 《Python基础教程分享》