很多刚入行的产品或者开发兄弟,一听到要画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了,才想起来查表结构。

那时候,哭都来不及。

赶紧去画吧。

画完记得找老鸟帮你看一眼。

哪怕只是问一句“这关系对吗”,也能帮你避开大坑。

这就够了。