电商系统-数据库建表

1.下面表中最比较重要和通用的是create_time和update_time这两个字段。这两个要设置为date_time类型,具体到某个时间,而不是date类型。 这两个字段可以避免我们在写代码的时候忘记打印时间戳,有时候通过这两个字段可以减少我们查询业务代码的时间。

2.单一索引和组合索引用于提高我们查询表的效率。

 

1.user表 

id-int

username-varchar

password-varchar

email-varchar

phone-varchar

question-varchar

answer-varchar

role-int

create_time-datetime

update_time-datetime

2.建立唯一索引 UNIQUE KEY 'user_name_unique' (`username`) USING BTREE.

因为我们在进行用户名校验的时候使用的是同步方法,但是如果使用分布式系统的时候这种方案不可取了。我们通过数据库的唯一索引,把username设置为唯一索引就把username的唯一确定性交给数据库处理。所以我们就不需要加锁和同步方法判断用户名是否存在。

password 保存在数据库中的是经过MD5盐值进行加密后的密码的,所以我们只通过password这个字段是看不到用户的密码的。

role 0为管理员 ,1为普通用户。

分类表:

id-int

parent_id-int

name-varchar

status-tinyint

sort_order-int

create_time-datetime

update_time-datetime

 

parent_id 实现一个递归,当parent_id=0的时候说明这是一个根节点,一级类别。同理别的商品类别parent_id可能为1,2.. 。类别的树状图可能是无限级别扩展的,当parent_id=0是结束。

status 1正常 2已废弃

sort_order 排序序号,

产品表

id-int

category_id-int

name-varchar 商品名称

subtitle-varchar 商品副标题

main_image-varchar(500) 主图,保存url的相对地址

sub_image-text 图片地址,json格式,扩展用。

detail-text 商品详情,富文本 可能需要加粗,图片等。

price-decimal(20,2) 20为包括小数位总体位数,也就是说这里表示18为整数,2位小数。价格 (需要注意计算时候的精度丢失问题)

stock-int 库存

status-int 1在售 2下架 3删除

create_time-datetime

update_time-datetime

购物车表

id-int

user_id -int 

product_id-int

quantity-int

checked-int 1勾选,0未勾选

create_time

update_time

因为这个表会经常用到user表的非主键user_id进行查询(主键是id).所以我们在创建购物车表cart的时候为user_id加上了索引 (KEY `user_id_index` (user_id) USING BTREE) ,从而提高表达查询效率。

 

支付信息表(pay_info)

id-int

user_id-int

order_no-bigint 订单号

pay_platform-int 支付平台 ,1-支付宝,2-微信

platform_number-varchar 支付流水号

platform-status-varchar 支付状态

create_time-datetime

update_time-datime

 

订单表

id-int

order-no-bigint

user_id-int

shipping_id-int 对应订单的地址

payment-decimal 实际付款金额,不能和产品中的价格关联,如果产品中的价格在卖了之后改动,那么实际付款金额不变。

payment_type-int 支付类型 1.在线支付 2.货到付款

postage-int 运费(可以先设置为包邮,以为对接物流的时候进行扩展)

status-int 订单状态,0-取消,10-为付款,20-已付款,40-已发货,50-交易成功,60-交易关闭。 (这样设置的好处是,我们如果想查询一个订单是否发货只要查询订单状态是否大于20。)

payment_time-datetime 支付时间,把支付宝确认支付之后的回调记录的时间记录到这里。

send_time-datetime 发货时间

end_time-datime 交易完成时间

close_time-datetime 交易关闭时间

create_time-datetime

update_time-datetime

 

订单明细表order_item

id-int

user_id-int (虽然这个id通过关联order表也能查询到,但是这样子进行关联查询会造成效率变低,所以有时候我们也会在个别表中加入这种字段 )

order_no-bigint

product_id-int

product_name-varchar

product_image-varchar

current_unit_price-decimal

quantity-int

total_price-decimal 直接进行计算并且存储,不用以后每次都进行计算。

create_time-datetime

update_time-datetime 

这里加了组合索引(KEY `order_no_user_id_index `(`user_id`,`order_no`) USING BTREE)

 

收货地址表

id-int

user_id-int

receiver-name-varchar

receiver-phone-varchar

receiver-mobile-varchar

receiver-province-varchar

receiver_city-varchar

receiver_district-varchar

receiver_address-varchar

receiver_zip-varchar

create_time-datetime

update_time-datetime

转载于:https://my.oschina.net/u/3138201/blog/917432

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值