商品订单表怎么设计_数据库设计之字段冗余

商品订单表怎么设计_数据库设计之字段冗余
学过数据库设计的同学都知道,数据库设计有三⼤范式,但是在实际⼯作中,三⼤范式很难被严格的执⾏。本⽂将给⼤家介绍⼀种常见的、违反范式的数据库设计⽅案——字段冗余
1 经典⽰例
先来看⼀个经典的例⼦,在⼀些商城系统⾥,要显⽰已购买的订单,⼀般会显⽰订单号、下单时间、订单⾦额、商品名称等,如下图。
正常我们如果按三⼤范式来设计表,应该是下⾯这样,包含【订单表】和【商品表】,在【订单表】中⽤【商品ID】来关联【商品表】
但是这样设计的话,在订单详情页⾯,要显⽰商品名称的话,就得⽤【订单表】+【商品表】关联查询
2 字段冗余设计
上⾯两张表的设计,从三⼤范式来说是合理的。但是在项⽬实际中,查看订单详情是很频繁的操作,每次操作,系统就得关联【订单
表】+【商品表】查询。但其实我们只会在订单详情⾥显⽰【商品名称】这⼀个字段,所以我们可以在【订单表】⾥增加⼀个【商品名称】,这样我们要显⽰订单详情时,只需要查询【订单表】就可以了,如下:
3 字段冗余优缺点
缺点:
拓扑异构酶
从上⾯的例⼦,我们能很直观的看出来,字段冗余有⼀个明显的缺点,就是【订单表】和【商品表】
都存了【商品名称】,多占⽤了⼀份数据库空间,并且有多表同时更新的问题。当我们在后台修改商品名称时,要考虑订单表⾥的商品名称是否要⼀起修改。这⾥为什么是“考虑”,⽽不是⼀定要⼀起修改呢?这就要看需求了,⽐如我订单详情就是要显⽰当时购买的商品名称,⽽不是最新的商品名称,那么这种场景,在更新商品表时就不需要去更新订单表。
乐山师范学院学报扩展:
邵洵美有些时候,字段冗余不只冗余⼀个字段,还是订单+商品的例⼦,商品名称、商品价格、商品描述等,我都要保存当时的值,后续就算修改商品,也不要去修改订单⾥关于商品的信息,这种场景,我们就要在订单表⾥冗余很多商品字段,这时候,我们可以设计⼀张【商品快照表】保存每笔订单对应的当时的商品信息,如下:
泉州汽车运输总公司
优点:
字段冗余虽然多占⽤了空间,但是换来的好处是简单化了数据库查询,要查看订单详情,只需要查询订单表就可以了,减轻数据库压⼒。简单来说,字段冗余就是⽤空间换取时间的⼀种数据库设计⽅案
网上杂志
4 什么时候使⽤字段冗余
只要记住⼀句话就可以了:查多改少的场景,适合⽤字段冗余。还是上⾯的例⼦:订单详情的查询很多,但是商品名称的修改很少,适合将商品名称冗余到订单表中
5 总结
肘内翻数据库字段冗余是很常见的数据库设计⽅案,基本上我接触过的项⽬都不可避免的⽤到字段冗余设计,已经⼯作的⼩伙伴们也可以在⾃⼰的项⽬⾥是否有字段冗余的设计。

本文发布于:2024-09-21 22:43:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/364515.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:订单   设计   商品   数据库   商品名称
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议