讨论较好的商品订单、购物车(收藏架)解决方法!
看过好几个商城的购物车(收藏架)的实现方法,但感觉执行效率都不是很理想
希望能讨论一下,商品订单与购物车(收藏架)的实现方法:
1.购物车(收藏架),商品是如何存放数据库更好?是以单独的临时表存放购物车中每一商品对应一条记录,还是每一顾客对应一条记录然后用“,”分隔商品id?如(1502, 1503, 1504)
2.根据购物车下的订单如何存放管理?是否与购物车中的记录在同一表中,是每一商品对应一条记录,还是每一订单对应一条记录然后用“,”分隔商品id?
或许还有其它更好的办法?一般大的商城是采用何种方案?
问题点数:100、回复次数:18Top
1 楼doveph(Dove)回复于 2005-05-27 11:05:11 得分 0
不是吧!没一个人来顶?Top
2 楼lyexcel(冰上飞人)回复于 2005-05-27 11:19:14 得分 10
根据第一范式的要求,最好不使用逗号分割法.
1.购物车(收藏架), 采用一种商品+一个人对应一条记录的方法, 例如
商品ID, 购物者ID, 数量,等等
1 someOne1 1
2 someOne1 3
1 someOne2 5
3 someOne2 6
2.下订单应该每人每次一个订单(称之为订单表), 一个订单对应于多条商品明细(称之为购物明细表)
也就是说, 订单表与购物明细表是一对多的关系
个人见解,请大家批评指正
Top
3 楼a040liutao(冬之心)回复于 2005-05-27 11:23:40 得分 15
同意楼上!
以前做类似程序都是没有用过逗号分割
感觉逗号分割的方法会使修改购物车等操作变的比较麻烦Top
4 楼aspme(.net初成型)回复于 2005-05-27 11:26:27 得分 11
我还是比较喜欢用表来实现的,两个表,通过货物ID来实现关联查询,临时表用于想购买的商品的存放,另一个表才是真正存放确定提交时候的清单Top
5 楼doveph(Dove)回复于 2005-05-27 11:47:48 得分 0
lyexcel(冰上飞人)说的很有道理,还请各位说说各方法的利与弊,一单多记录会不会对造成对数据库操作过频繁?
另外,像 aspme(技术转型中)说的,是否订单表与购物车的表(购物车表作为临时表)应该分开?Top
6 楼lyexcel(冰上飞人)回复于 2005-05-27 11:54:57 得分 8
订单表确实与购物车表分开,但结构上几乎可以一致.
另外购物车表的购物明细表 与 订单表的购物明细表 也应该分开, 者两个表的结构也几乎一致Top
7 楼bingofei(bingo)回复于 2005-05-27 11:58:49 得分 8
购物车为什么要放在数据库中?购物车本身是临时选择的数据,购物完毕这些数据就没用了亚。
用session或者cookies都能解决啊!
个人认为把购物车做成一个对象存放在Session或者cookie中更好。Top
8 楼doveph(Dove)回复于 2005-05-27 12:56:08 得分 0
用session与cookie如果用户关闭浏览器或是出现某种情况,收藏架中的数据就会丢失,而保存在数据表中就不会了,在下次用户登录后还能看到收藏架中的商品Top
9 楼lyexcel(冰上飞人)回复于 2005-05-27 13:01:42 得分 8
同意楼上的Top
10 楼doveph(Dove)回复于 2005-05-27 13:02:03 得分 0
以lyexcel(冰上飞人) 的意思是,收藏架与订单表都要分成两个表?比如:订单表中只包含用户ID及订单号,而订单明细表又是独立的表(里面包含订单的详细资料是吗)?
如果这样的话,就订单与收藏架来说就有四个表了,这样会不会对数据库压力很大?Top
11 楼lyexcel(冰上飞人)回复于 2005-05-27 13:06:45 得分 0
因为购物车只是临时使用的, 要定时清空; 而订单是要持久保存的. 两者的作用时间不一样,实现的内涵也不一样, 从现实的意义上来说, 还是分开的比较好.
至于压力一说,个人认为分开有利于缓解压力. 并不是表越多,压力越大.Top
12 楼sfwxw0456(全职杀手)回复于 2005-05-27 13:09:11 得分 8
同意楼上的说法!
但是在购物的时候放在数据库里,这样对数据库的操作是不是太频繁了!?会不会影响速度!?Top
13 楼runtu(闰土/无锡)回复于 2005-05-27 13:13:17 得分 8
Mark! 关注Top
14 楼doveph(Dove)回复于 2005-05-27 13:22:48 得分 0
是呀,我就是考虑到对据库的操作,查询太频繁,是否会影响速度和其它各方面Top
15 楼doveph(Dove)回复于 2005-05-27 13:29:52 得分 0
不知道像类似当当这类系统是如何解决这问题的Top
16 楼bingofei(bingo)回复于 2005-05-27 13:39:06 得分 8
收藏夹的数据的确需要放在数据库中,
但是购物车并不需要呀,所以我上面才说购物车的数据保存在session或者cookie中。这样根本不涉及数据库操作,效率明显能提高很多。
Top
17 楼blueonly(认真编程,低调生活。)回复于 2005-05-27 14:46:11 得分 8
购物车,商品,订单当然都要分开
用数据库存购物车,挺好,不受cookies大小的限制Top
18 楼blueonly(认真编程,低调生活。)回复于 2005-05-27 14:50:56 得分 8
一个购物车程序基本应该有
产品表
订货人表
收货人表
购物车表
订单表
推荐你看一看, Professional asp xml 里面有一个介绍购物车程序的例子
Top




