Rails 产品与订单的数据库设计

QueXuQ · 2012年10月09日 · 最后由 QueXuQ 回复于 2012年10月10日 · 20758 次阅读

我这里讲一下我的思路,希望各位能给一点建议,完善我的设计方案。

表“订单”,order:
单号:id
名字:name
表“产品”,product:
id
名字:name
价格:price
数量:number

本来表的设计没有什么特别复杂的,但是因为他们存在着一些联系. 例如:当产品被购买的时候,加入了订单,不同的订单就需要 has_many 各种产品,然后产品的数量都需要减去对应的数量。

我想法是建一个表:

表“购买”,purchase:
order_id
product_id
数量:purchase_number

举例: 如订单 1,新订单中,产品有沐浴露*10,肥皂*2. 库存产品中,沐浴露(编号 5)*20,肥皂(编号 7)*10

每一次当把产品放入订单的时候,就是创建一个 purchase,例如上面的就是创建:

表purchaser(编号1),
order_id:1,product_id:5,purchase_number:10
order_id:1,product_id:7,purchase_number:2

这样来设计订单与库存之间的联系是否为好办法呢?

我说一下我的意见,未必是最好方案。 这个数据库的结构要比你构思的复杂点。 首先,需要表产品订单库存出库这 4 个表,根据你的需求来说。

产品记录产品名称产品价格等等产品信息。 订单记录订单号订单创建人等等 库存记录产品的 ID产品总量等等 出库记录产品的 ID订单的 ID产品数量打单员等等

这样可以通过查找出库记录的时候,根据订单的 ID可以看到这个订单一共有什么产品。 其实我觉得如果你这里不涉及一个出库的需求,单纯需要知道每个订单的产品,应该有更加简洁的设计方案。

匿名 #2 2012年10月10日

偶以前的做法是,订单表(主表),订单详细表(从表),商品表 订单详细表里有商品 id,同时存有当前价格(如果你希望,别人买了东西以后,商家改了价格,你订单价格也改变,那你就痛苦去吧),数量,然后商品的详细参数。

匿名 #3 2012年10月10日

你的设计里也别叫什么购买表。。。

表“购买”,purchase

大哥,订单就是记录购买信息的啦

items,item_details,stocks,orders,目前我们用的是这种做法。

#2 楼 @help5305fff 恩。你说的那个更改价格的问题之前一直没有考虑到。 #4 楼 @zfjoy520 items,item_details 分别存储的字段是什么?根据你们这个表,是如何处理商品与订单之间的关系的?

匿名 #6 2012年10月10日

@QueXuQ 我之前做过商城,还有收货地址,你也得存到订单表里,而且不是通过 id 关联用户的地址。是直接存储生成的地址信息到 text 的字段里,允许商家修改,不过修改记录,你得存起来,可以查。

items 简单常用信息,item_details 较少用到的信息,两者 id 同号,不用做额外的关联;items 与 orders 之间的关系跟 6 楼说的类似,orders 这个表尽量少用 id 关联,会省去很多未来扩展带来的麻烦。

#6 楼 @help5305fff 恩。觉得你说的订单详细表是我说的“表“购买”,purchase”加强版~^_^,同时保存了订单信息还有商品信息

#7 楼 @zfjoy520 你说的表设计比 6 楼的更要复杂一些,我要好好研究看看设计思路。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号