🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 步骤 1 : 用户表t_user 登录页面采集用户的账号和密码 ![](https://box.kancloud.cn/f495bafce1ddc3ba56bd10f24233019a_424x493.png) ![](https://box.kancloud.cn/429ffa17c81fbc556eb5a60c5169fa0e_1019x646.png) ## 步骤 2 : 分类表t_category ![](https://box.kancloud.cn/0ea695a51feeddf252122d56df6f740f_328x689.png) ![](https://box.kancloud.cn/779cf31924f68fcf634ad18d4c8d5697_989x537.png) ## 步骤 3 : 属性表t_property 在产品页的商品详情标签下,显示本产品对应分类所设置的所有属性。 ![](https://box.kancloud.cn/acee2f3211179e3c096e222c4aa0210b_996x417.png) ![](https://box.kancloud.cn/71b00c3c384901648338029336a79e73_858x537.png) > 比如衣服分类下的所有产品,都有共同的一系列属性,像:产地,质地,尺寸等等。 那么“有哪些属性” 这个信息,就维护在属性表里,而且是和分类关联起来的。 另一种分类,比如马桶,那么它就是另外一系列属性了,像: 是否自动冲水,是否播放音乐,深度,宽度 等信息。 * 问题:为什么属性表要指向分类表而不是产品表呢,是一类商品属性都相同么? > 是的,一类商品属性都一样。 > 如果要单独为每种商品设计属性,也不是不可以,但是维护起来太辛苦了。 比如演示网站上就有1500种商品,那么每种商品假设有5种属性好了,那就是7500种属性,光是做这个演示网站的准备数据,就太复杂了。 ## 步骤 4 : 产品表t_product 产品页的产品信息里显示本产品的名称,小标题,原始价格,促销价,销量,库存等信息 ![](https://box.kancloud.cn/31401053db255e8ea6ce0ab6df8ab8d0_691x408.png) ![](https://box.kancloud.cn/b64c6fbeb1de6c3f0f38155d80b8ce53_858x537.png) > name: 产品名称 subTitle: 小标题 originalPrice: 原始价格 promotePrice: 优惠价格 stock: 库存 createDate: 创建日期 ## 步骤 5 : 属性值表t_property_value 在产品页的商品详情标签下,显示本产品的所有属性值 ![](https://box.kancloud.cn/acee2f3211179e3c096e222c4aa0210b_996x417.png) ![](https://box.kancloud.cn/eae863a4d02581e617c9803f6ac422a1_858x537.png) * * * * * * 问题: 为什么有了属性表还需要一个属性值表呢? > 因为不同商品的相同属性,他们的属性值不一样呢 比如iphone 有颜色,值是白色 熊猫手机也有颜色,值却是黑白相间 ## 步骤 6 : 产品图片表t_product_image 在产品页显示5个单个图片 ![](https://box.kancloud.cn/b876b20f33cbbc27f8f39ac8a67fec6c_526x622.png) ![](https://box.kancloud.cn/36bccae66effa8f4f43cf5599c47aad1_858x537.png) > type表示类型,产品图片分单个图片和详情图片两种 * * * * * * 问题:商品图片表中并没有图片地址这一字段,我不清楚怎么获取指定的商品图片 > 基于 productImage 表的id值来保存的,保存在固定位置(后面章节会谈到)。 ## 步骤 7 : 评价表t_review 产品页显示评价信息 ![](https://box.kancloud.cn/7affdd4950a85ce19e69121d913bc64e_1279x229.png) ![](https://box.kancloud.cn/d421516f57617df831f1947bf245d575_858x537.png) ## 步骤 8 : 订单表t_order 在后台的订单管理页面看到的订单信息 ![](https://box.kancloud.cn/d02496f1a7d65cef4a72f8a584b55440_1835x185.png) 生成订单前,结算页面 ![](https://box.kancloud.cn/45bf50d640b17f33b706fe292f0d7676_1060x320.png) ![](https://box.kancloud.cn/cd26bf3b26b52a562c7e97c2ab233e7b_858x537.png) > orderCode: 订单号 address:收货地址 post: 邮编 receiver: 收货人信息 mobile: 手机号码 userMessage: 用户备注信息 createDate: 订单创建日期 payDate: 支付日期 deliveryDate: 发货日期 confirmDate:确认收货日期 status: 订单状态 ## 步骤 9 : 订单项表t_order_item 在购物车中看到的订单项信息 ![](https://box.kancloud.cn/a150a21453f9fabcff204ce9428e380c_1304x524.png) ![](https://box.kancloud.cn/fd31f49ca6f9cde02f85a69763cdaa47_858x537.png) > number字段表示购买数量 * * * * * * 问题:订单项表的user_id有点冗余,毕竟通过订单项中的订单id可以确认用户,这里是怎么考虑的呢? > 在创建了购物车之后,创建订单之前,这些订单项是没有和订单关联起来的。 如果不加个uid, 那么这些订单项属于哪个用户的信息就丢失了。 ## 步骤 10:导出SQL语句 1. 把name复制到comment中,运行脚本,选择Tools菜单--Execute Commands,点击打开, ![](https://box.kancloud.cn/08f01db5f9343df7ef5b63569c2b2433_214x101.png) 选择name2comment.vbs 2. 选择Database菜单—Generate Database,生成数据结构的SQL,注意在format标签中将字符编码设置成UTF-8,导出SQL文件。 ## 步骤 11:创建数据库,导入SQL 1. 在navicat中创建数据库:tmall_ssm,并且将数据库的编码设置为utf8,便于存放中文 2. 运行刚刚导出的SQL脚本 tmall_ssm.sql ~~~ /*==============================================================*/ /* DBMS name: MySQL 5.0 */ /* Created on: 2018/8/25 14:56:03 */ /*==============================================================*/ drop table if exists t_category; drop table if exists t_order; drop table if exists t_order_item; drop table if exists t_product; drop table if exists t_product_image; drop table if exists t_property; drop table if exists t_property_value; drop table if exists t_review; drop table if exists t_user; /*==============================================================*/ /* Table: t_category */ /*==============================================================*/ create table t_category ( id int not null auto_increment comment 'ID', name varchar(255) comment '名称', primary key (id) ); alter table t_category comment '分类表'; /*==============================================================*/ /* Table: t_order */ /*==============================================================*/ create table t_order ( id int not null auto_increment comment 'ID', order_code varchar(255) comment '订单编号', address varchar(255) comment '地址', post varchar(255) comment '邮编', receiver varchar(255) comment '收件人', mobile varchar(255) comment '手机号', user_message varchar(255) comment '买家留言', create_date datetime comment '创建时间', pay_date datetime comment '支付时间', delivery_date datetime comment '发货时间', confirm_date datetime comment '确认收货时间', status varchar(255) comment '状态', user_id int comment '所属用户', primary key (id) ); alter table t_order comment '订单表'; /*==============================================================*/ /* Table: t_order_item */ /*==============================================================*/ create table t_order_item ( id int not null auto_increment comment 'ID', number int comment '数量', user_id int comment '所属用户', product_id int comment '所属产品', order_id int comment '所属订单', primary key (id) ); alter table t_order_item comment '订单项'; /*==============================================================*/ /* Table: t_product */ /*==============================================================*/ create table t_product ( id int not null auto_increment comment 'ID', name varchar(255) comment '名称', sub_title varchar(255) comment '子标题', original_price float comment '原价格', promote_price float comment '促销价', stock int comment '仓库', create_date datetime comment '创建时间', category_id int comment '所属分类', primary key (id) ); alter table t_product comment '产品表'; /*==============================================================*/ /* Table: t_product_image */ /*==============================================================*/ create table t_product_image ( id int not null auto_increment comment 'ID', type varchar(255) comment '类型', product_id int comment '所属产品', primary key (id) ); alter table t_product_image comment '产品图片表'; /*==============================================================*/ /* Table: t_property */ /*==============================================================*/ create table t_property ( id int not null auto_increment comment 'ID', name varchar(255) comment '名称', category_id int comment '所属分类', primary key (id) ); alter table t_property comment '属性表'; /*==============================================================*/ /* Table: t_property_value */ /*==============================================================*/ create table t_property_value ( id int not null auto_increment comment 'ID', value varchar(255) comment '属性值', product_id int comment '所属产品', property_id int comment '所属属性', primary key (id) ); alter table t_property_value comment '属性值表'; /*==============================================================*/ /* Table: t_review */ /*==============================================================*/ create table t_review ( id int not null auto_increment comment 'ID', content varchar(4000) comment '内容', create_date datetime comment '创建时间', product_id int comment '所属产品', user_id int comment '所属用户', primary key (id) ); alter table t_review comment '评价表'; /*==============================================================*/ /* Table: t_user */ /*==============================================================*/ create table t_user ( ID int not null auto_increment comment 'ID', name varchar(255) comment '名称', password varchar(255) comment '密码', primary key (ID) ); alter table t_user comment '用户表'; ~~~