购物车,用户,商品表这3这之间的关系


以我自身的理解,

购物车 => 用户,1 -> 1
用户 => 商品信息, n -> n

那么:

购物车 => 商品就是 n -> n了

不知道我这样理解对吗?

将这三者关联起来,数据库该咋设计呢?

我目前想到的方法就是,新建5个表:

  1. 用户表
  2. 商品表
  3. 购物车表
  4. 用户商品关系表
  5. 购物车商品关系表

主要字段就是:

  1. 用户表:id,uname,pwd等等
  2. 商品表:id,goodname,price等
  3. 购物车表:id,uid,uid为对应用户id
  4. 购物车商品关系表:gid,cid分别为商品id,购物车id
  5. 用户商品关系表:uid,gid分别为用户id和商品id

请问各位我这样设计行吗?高效吗?有冗余吗?

求推荐高效的数据库设计。。。非常感谢!

php 数据库设计 mysql mysql优化

卷毛的黑猫 10 years, 2 months ago

个人觉得 用户商品关系表 没有必要, 购物车商品关系表 gid cid 共同组成 primary key ,以满足 n->m 的要求。关于效率和规范问题,这个应该达到范式要求了,够用了吧。个人愚见,如有问题,欢迎讨论。

唤潮鲛姬娜美 answered 10 years, 2 months ago

1.用户表
2.产品表
3.购物车表(用户id,商品id,被加入购物车时的价格以及SKU信息)
4.订单表(用户ID,订单ID,子订单ID,订单摘要)
5.订单详情表(订单ID,子订单ID,订单生成时的商品信息)

suketai answered 10 years, 2 months ago

首先购物车这个概念你可以直接化为订单,这样就比较好理解了。 某个用户下了一个订单,订单内包含许多商品。 简单一句话各个的对应关系就不言而喻了。
所以新建4张表,前3张分别对应用户信息,订单信息,商品信息,第4张表将订单ID和商品ID对应起来。如果通过用户查询商品比较频繁的话也可以再加1张表,对应用户ID和商品ID。

唔..好吧..写完了才发现和你的思路是一样的,算是证明你这样设计是没问题的吧。

targetA answered 10 years, 2 months ago

Your Answer