[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: 订单状态
> 要注意order是关键字
## 步骤 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 '用户表';
~~~
- 项目简介
- 功能一览
- 前台
- 后台
- 开发流程
- 需求分析-展示
- 首页
- 产品页
- 分类页
- 搜索结果页
- 购物车查看页
- 结算页
- 确认支付页
- 支付成功页
- 我的订单页
- 确认收货页
- 确认收货成功页
- 评价页
- 需求分析-交互
- 分类页排序
- 立即购买
- 加入购物车
- 调整订单项数量
- 删除订单项
- 生成订单
- 订单页功能
- 确认付款
- 确认收货
- 提交评价信息
- 登录
- 注册
- 退出
- 搜索
- 前台需求列表
- 需求分析后台
- 分类管理
- 属性管理
- 产品管理
- 产品图片管理
- 产品属性设置
- 用户管理
- 订单管理
- 后台需求列表
- 表结构设计
- 数据建模
- 表与表之间的关系
- 后台-分类管理
- 可运行的项目
- 静态资源
- JSP包含关系
- 查询
- 分页
- 增加
- 删除
- 编辑
- 修改
- 做一遍
- 重构
- 分页方式
- 分类逆向工程
- 所有逆向工程
- 后台其他页面
- 属性管理实现
- 产品管理实现
- 产品图片管理实现
- 产品属性值设置
- 用户管理实现
- 订单管理实现
- 前端
- 前台-首页
- 可运行的项目
- 静态资源
- ForeController
- home方法
- home.jsp
- homePage.jsp
- 前台-无需登录
- 注册
- 登录
- 退出
- 产品页
- 模态登录
- 分类页
- 搜索
- 前台-需要登录
- 购物流程
- 立即购买
- 结算页面
- 加入购物车
- 查看购物车页面
- 登录状态拦截器
- 其他拦截器
- 购物车页面操作
- 订单状态图
- 生成订单
- 我的订单页
- 我的订单页操作
- 评价产品
- 总结