在开发微信商城小程序时,遇到一个关于表设计的问题。
如果按照我之前的思考,我是这样设计表的:
**订单表**
shop_order表,记录订单情况
| 字段 | 类型 | 描述 |
| --- | --- | --- |
| id | int | |
| uid | int | 用户id |
| product_id | varchar | 商品编号 |
| trade_sn | varchar | 订单编号(利用微信支付trade_sn作为唯一编号) |
| price | int | 商品价格 |
| score | int | 积分使用,默认为0 |
| dates | time | 订单日期 |
| express_company | 快递公司名称 |
| express | varchar | 快递号 |
| status | tinyint | 订单状态 -1 订单取消 0 未发货 1 已发货 2 已收货|
**商品管理表**
shop_product表
| 字段 | 类型 | 描述 |
| --- | --- | --- |
| id | int | |
| name | varchar | 商品名称 |
| price | int | 商品价格 |
|img_url| varchar|轮播图|
| total | int | 商品总数 |
| discount | int | 折扣价 |
| member_price | int | 会员价 |
| set_color | varchar | 颜色 |
| set_size | varchar | 尺码 |
| score_types | tinyint | 积分是否可使用,默认 1 不可使用 |
| brand | int | 所属品牌 |
| classify | int | 所属分类 |
| contents | text | 内容 |
| dates | int | 创建时间 |
| status | tinyint | 状态 0 上架 1 下架 |
但是深入开发是会发现,会存在以下问题
每个用户是对多个订单
每个订单都是对应多个商品
一个订单表记录多个商品造成查询混乱,不易于扩展。
对比已经存在的这两个表,找出相同的特性,建立一个中间表order_middle。
相同特性:
订单编号 trade_sn 每个订单具有唯一性,对应同一订单的多个商品
订单id order_id 创建订单的自增长ID
产品id product_id 用户购买的产品对应id
于是乎我们监理处一个中间表order_middle,该表的作用主要是记录
·一个用户对应一个订单
· 一个订单对应多个商品
| 字段 | 类型 | 描述 |
| --- | --- | --- |
| id | int | |
| order_id | int | 订单id |
| trade_sn | varchar | 订单编号 |
| product_id | int | 产品id |
| price | int | 原价 |
| cauth_iden | varchar | 用户唯一标识符 |
| status | tinyint | 状态 |
order表需要修改成
| 字段 | 类型 | 描述 |
| --- | --- | --- |
| id | int | |
| uid | int | 用户id |
| trade_sn | varchar | 订单编号(利用微信支付trade_sn作为唯一编号) |
| total_price | int | 总价格 |
| score | int | 积分使用,默认为0 |
| dates | time | 订单日期 |
| express_company | 快递公司名称 |
| express | varchar | 快递号 |
| status | tinyint | 订单状态 -1 订单取消 0 未发货 1 已发货 2 已收货|
网友评论