- **用户表**
CREATE TABLE `mmall_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户表id', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密', `email` varchar(50) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `question` varchar(100) DEFAULT NULL COMMENT '找回密码问题', `answer` varchar(100) DEFAULT NULL COMMENT '找回密码答案', `role` int(4) NOT NULL COMMENT '角色0-管理员,1-普通用户', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后一次更新时间', PRIMARY KEY (`id`), UNIQUE KEY `user_name_unique` (`username`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
id 为自增长主键
username为用户名,注册时不能允许用户名重复,在并发时可以通过锁来解决这个问题,查询某个用户名是否存在可以用同步方法。但是当架构变成分布式的时候这种方法不可取。所以这里使用过数据库的唯一索引 UNIQUE KEY 通过 BTREE 这种方式把 username 设置成唯一索引。这样对username的唯一确定性就交给Mysql,这样在业务处理时就不需要加锁或同步方法了。
**分类表**
**产品表**
**购物车表**
**支付信息表**
CREATE TABLE `mmall_pay_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL COMMENT '用户id', `order_no` bigint(20) DEFAULT NULL COMMENT '订单号', `pay_platform` int(10) DEFAULT NULL COMMENT '支付平台:1-支付宝,2-微信', `platform_number` varchar(200) DEFAULT NULL COMMENT '支付宝支付流水号', `platform_status` varchar(20) DEFAULT NULL COMMENT '支付宝支付状态', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;
当生成订单、发起支付请求的时候,会生成一个远程的支付宝订单,存在 platform_number 中。
**订单表**
**订单明细表**
**收货地址表**