0 0

请各位牛人指教,一个困扰我很久的订单表设计问题。25

旅游电商订单表设计问题

问题描述:网站提供酒店,机票,旅游线路等等...多种产品的预定。用户可以同时预定多个产品,怎么把这么多不同类型的产品糅合到一个订单记录中也就是一个订单号。

               因为这些产品的每个订单属性都不一样。一个订单记录怎么去做这么多种订单的订单详情关联,,

             例如:订单号是DK3453545,那这个订单号里用户是预定了机票,门票,酒店,以及旅游车的 那这个订单记录中该怎么把这些订单详情关联到这个订单记录中,而且这些用户需要预定的产品是不固定的。

               我也想过把每个产品类型的订单记作为一个单独产品类型订单记录,那么就会存在很多个订单表,当系统需要查询当前用户的订单时,就需要把所有的类型订单表都遍历一遍。这样效率太慢。而且感觉很不好维护,

 

麻烦各位做过订单电商的牛人给点经验。;

 

 

2012年6月29日 10:20

7个答案 按时间排序 按投票排序

0 0

采纳的答案

1、商品基础属性及库存(SKU)
2、订单以及订单详情(Order & OrderItems),OrderItems 里面的record 肯定与某个SKU 关联上。同时你们的这种订单,一定包含个性化定制信息,一般都可以用一个字段将个性化信息保存起来(比如订酒店,可能包含日期、住几晚、单间还是标间、其他特殊要求等)
3、Shipment,订单只是与客户签订的一个意向合同,那么shipment 就是你们如何去履约这个合同的载体。这种情况下,一类商品就可以设计成一种shipment,具体的履约方式、过程和状态,都可以放到这个模型里。

总结:订单是面向用户的模型,代表着一个销售或者销售意向合同。shipment 是面向内部实际操作环节的模型,代表系统如何去跟踪和记录订单的每个不同类型的商品是如何履约的。

2012年6月29日 13:44
0 0

如果想和到一个订单表,那么就加个订单的类型吧,比如机票类型是JP,酒店类型是JD,然后关联起来对应产品的id即可。
更好的设计方法是对所有的产品做一个抽象,然后你的机票,酒店等都是这个对象的一个实现(这个时候也需要做类型的,只是类型放在了抽象对象中而已)
两种发发都可以,你自己参考

2012年6月29日 16:02
0 0

1.订单表
ID 订单号      总价格
1  DK3453545  400

2.订单明细表
ID    订单号     序列号 商品ID  数量  单价
1001  DK3453545 1     991    1   100
1002  DK3453545 2     992    2   100
1003  DK3453545 3     993    1   100

3.商品表
ID  名称        种类   当前价格  描述
991 迪拜酒店      1    100     迪拜七星级帆船酒店
992 上海到迪拜机票  2    100    1月1日上海到迪拜机票
993 迪拜一日游     3    100    1月2日迪拜一日游

4.酒店表
ID  名称     星级
41  迪拜酒店  7星

5.机票表
ID  名称          出发地  目的地  类型
51  上海到迪拜机票   上海    迪拜  经济舱

6.旅游表
ID  名称        出发地  目的地  天数  是否有导游
61  迪拜一日游   上海    迪拜     1    1

当系统需要查询当前用户的订单时,只先查到1,2,3表。只能看订单概貌,可以将一些酒店,机票等共有的属性放到商品表里。
然后要看明细,只能点击一行,进到另一个页面才能看特定于某个种类产品的属性,这时再去查4或5或6表。这样4,5,6页面也可以独立了,

2012年6月29日 14:25
0 0

把产品这个对象单独抽象出来做个接口,订单和产品的关系是一对多的关系
Order--订单
Product--产品

Public Class Order{
    private List<Product> products;

    //get,set方法等等
     //其他一些和订单相关的方法
}


然后具体的产品,比如机票,门票,酒店等都是Product类的具体实现.
自己抽象一下这个接口,把产品中共性的东西提炼出来作为接口的方法,比如所以产品都有产品单价getPrice()方法,然后做个抽象的产品类实现Prodect接口,把共性的实现代码放在抽象类中,所有的具体类,比如机票,门票,酒店等,都继承这个抽象类,然后实现各自的具体业务逻辑.

2012年6月29日 13:59
0 0

hibernate继承映射。

2012年6月29日 13:41
0 0

亲,如果非要整成一张表的话,只有在字段冗余上面下工夫了。首先有个订单类型(机票,门票,酒店)字段,如果用户定了机票,录入机票相关字段即可,依次类推。查询数据的时候也只需要根据订单类型定位相关字段即可。(当然Entity对象还是按订单类型分别描述各个订单的属性,只是数据库表中冗余所有类型的字段)

2012年6月29日 10:42
0 0

没做过订单电商,我想到以下:

1.订单表
ID 订单号
1  DK3453545


2.订单详细表
ID 订单号     序列号 商品ID
1  DK3453545 1     991
2  DK3453545 2     992
3  DK3453545 3     993

3.商品表
ID  名称     种类
991 迪拜酒店    1
992 xx机票     2
993 杭州一日游  3

2012年6月29日 10:31

相关推荐

Global site tag (gtag.js) - Google Analytics