别整那些虚的,一张网上购物系统er图搞定需求,老板看了都点头
很多刚入行的产品或者开发兄弟,一听到要画ER图就头大。觉得那是数据库的事儿,跟我没关系。大错特错。不懂ER图,你的系统上线就是灾难。这篇文不跟你扯理论,直接上干货。教你怎么画出一张能落地的网上购物系统er图。解决你表结构混乱、关联搞不清的痛点。
先说个真事儿。我有个朋友,做电商后台,没画ER图,直接写代码。结果用户表和订单表一对多关系搞反了,查个历史订单,数据库直接崩了。老板骂得狗血淋头。所以,听我一句劝,动笔前,先把关系理顺。
第一步,找核心实体。
别一上来就想着字段。先想清楚,你的系统里有哪些“东西”是必须存在的。对于网上购物系统来说,最核心的就三个:用户、商品、订单。
用户,就是买东西的人。
商品,就是摆在那卖的东西。
订单,就是用户下单后产生的交易记录。
这三个实体,是骨架。先把它们名字定好,别搞什么user_info, product_list这种花里胡哨的。就叫User, Product, Order。简单粗暴,好记。
第二步,理清关系。
这是最容易出错的地方。很多人画着画着就晕了。
用户和商品,没有直接关系。用户通过订单跟商品发生联系。
所以,用户和订单,是一对多。一个用户可以下多个订单。
订单和商品,也是多对多。一个订单可以买多个商品,一个商品也可以出现在多个订单里。
注意,这里有个坑。多对多关系,在数据库里不能直接建。得拆成两个一对多。
你需要中间表,通常叫OrderItem或者OrderDetail。
这张表里,要有order_id和product_id。
这就构成了:订单 -> 订单详情 -> 商品。
用户 -> 订单 -> 订单详情 -> 商品。
链路打通了。
第三步,补充关键属性。
实体有了,关系有了,现在加字段。
User表:id, username, password, phone, address。别加太多,登录注册够了就行。
Product表:id, name, price, stock, description。库存stock很重要,别漏了。
Order表:id, user_id, total_amount, status, create_time。status要标明支付状态,已付、未付、退款。
OrderDetail表:id, order_id, product_id, quantity, price。这里的价格是下单时的快照价格,别直接去Product表查,不然商品改价,历史订单就乱了。这点很多新手不懂,血泪教训。
第四步,检查约束。
外键关系要加上去。
Order表里的user_id,必须指向User表的id。
OrderDetail里的order_id指向Order表,product_id指向Product表。
还有,库存扣减逻辑。下单时扣库存,支付成功不退货,库存就少了。
这个逻辑不在ER图里体现,但ER图里的stock字段,必须支持并发更新。
别小看这个,高并发下,锁机制搞不好,超卖就完了。
第五步,迭代优化。
第一版ER图肯定不完美。
比如,你后来要加优惠券。
那就得加Coupon实体。
用户和优惠券是多对多,因为一个用户可以有多个优惠券,一个优惠券也可以被多人使用。
订单和优惠券是多对一,一个订单通常只用一张券。
这时候,你的ER图就要扩容。
别怕改,改图比改代码便宜。
网上购物系统er图 不是一成不变的,它是活的。
随着业务扩展,你要不断调整。
比如加个物流表,加个评价表。
评价表和User是多对一,和Product也是多对一。
这样,用户能看到自己的评价,也能看到商品的评价。
最后,提醒几点。
别追求完美主义。先跑通最小闭环。
用户能注册,能浏览商品,能下单,能支付。
这四个流程通了,ER图就合格了。
细节慢慢磨。
还有,别用那些复杂的工具炫技。
Visio, Draw.io, 甚至手绘,都行。
关键是逻辑清晰。
同事能看懂,DBA能执行,这才是好图。
网上购物系统er图 画得好,后期维护能省一半力气。
别等到线上出Bug了,才想起来查表结构。
那时候,哭都来不及。
赶紧去画吧。
画完记得找老鸟帮你看一眼。
哪怕只是问一句“这关系对吗”,也能帮你避开大坑。
这就够了。