我做购物车应该用2张表:
一个购物车表cart
<id> <user_id>
一个cart_item表来记录已经加入购物车的商品
<id> <cart_id> <item_id> <seller_id> <quantity> <create_time> <update_time>
还是,直接用一个user_cart表:
<id> <user_id> <item_id> <seller_id> <quantity> <create_time> <update_time>
阿神2017-03-20 15:51:22
首先,分析题主的问题,你要设计的购物车是给一个什么量级的平台使用,如果使用Mysql数据库设计的话,规模不大,流量不多的情况下是完全没有问题的,但如果流量很大,用户量级上去了是行不通的。
所以,推荐根据用户登录和未登录态两种情况来做。
1.未登录时,可以采取cookie方式保存,因为存在客户端,可以缓解服务器压力。当用户登录账号后,从cookie取数据保存到redis里面。
2,用户登录了,保存购物车数据到redis中
那为什么采取这种做法,采用redis因为它保存在内存里所以速度很快,就算有很高的并发,可以采取redis集群的方案来解决,通常我们的做法都是把一些比较热的数据采用redis来保存。
后面你可能还会根据用户的购物车记录或者购买记录等等用户行为做一些商品推荐等推送的时候,redis集合的并交集谁用谁知道。
说回原题,我就说个简单思路。
产品:采用hash表存储,productID,price。。。等等
购物车:采用集合存储,因为集合的唯一性,保证一个orderId对应多个商品,再重复一下就是交并差集真的好用。。
再细分还可以设计购买物品关联的集合啊,购物记录的有序集合啊等等。
以上思路,集体细节还是结合自己的使用情况设计即可。