数据库设计-商城购物系统

数据库设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
/*
Navicat Premium Data Transfer

Source Server : uiste
Source Server Type : MySQL
Source Server Version : 50542
Source Host : localhost
Source Database : ugo

Target Server Type : MySQL
Target Server Version : 50542
File Encoding : utf-8

Date: 10/16/2015 14:27:21 PM
*/

#创建数据库
create database ugo charset utf8;
#选择数据库
use ugou;

/*------------------------------------商品模块---------------------------------------*/
#创建商品类别表
DROP TABLE IF EXISTS `ugo_category`;
create table ugo_category(
cat_id smallint unsigned not null auto_increment primary key comment '商品类别ID',
cat_name varchar(30) not null default '' comment '商品类别名称',
cat_parent_id smallint unsigned not null default 0 comment '商品类别父ID',
cat_desc varchar(255) not null default '' comment '商品类别描述',
sort_order tinyint not null default 50 comment '排序依据',
unit varchar(15) not null default '' comment '单位',
is_show tinyint not null default 1 comment '是否显示,默认显示',
index pid(cat_parent_id)
)engine=MyISAM charset=utf8;

#创建商品国家表
DROP TABLE IF EXISTS `ugo_country`;
create table ugo_country(
country_id smallint unsigned not null auto_increment primary key comment '国家ID',
country_name varchar(30) not null default '' comment '国家名称',
country_parent_name enum('亚洲','欧洲','北美洲','南美洲','非洲','大洋洲','南极洲') not null default '亚洲' comment '国家所属区域',
sort_order tinyint not null default 50 comment '排序依据',
is_show tinyint not null default 1 comment '是否显示,默认显示',
index pid(country_parent_name)
)engine=MyISAM charset=utf8;

#创建商品品牌表
DROP TABLE IF EXISTS `ugo_brand`;
create table ugo_brand(
brand_id smallint unsigned not null auto_increment primary key comment '商品品牌ID',
brand_name varchar(30) not null default '' comment '商品品牌名称',
brand_desc varchar(255) not null default '' comment '商品品牌描述',
url varchar(100) not null default '' comment '商品品牌网址',
logo varchar(50) not null default '' comment '品牌logo',
sort_order tinyint unsigned not null default 50 comment '商品品牌排序依据',
is_show tinyint not null default 1 comment '是否显示,默认显示',
country_id smallint unsigned not null comment '商品品牌所属国家ID'
)engine=MyISAM charset=utf8;

#创建商品类型表
DROP TABLE IF EXISTS `ugo_attrtype`;
create table ugo_attrtype(
type_id smallint unsigned not null auto_increment primary key comment '商品类型ID',
type_name varchar(50) not null default '' comment '商品类型名称'
)engine=MyISAM charset=utf8;


#创建商品属性表
DROP TABLE IF EXISTS `ugo_attribute`;
create table ugo_attribute(
attr_id smallint unsigned not null auto_increment primary key comment '商品属性ID',
attr_name varchar(50) not null default '' comment '商品属性名称',
type_id smallint not null default 0 comment '商品属性所属类型ID',
attr_input_type tinyint not null default 1 comment '属性录入方式 0为手工录入,1为从列表中选择,2为文本域',
attr_input_value text comment '属性的值',
index type_id(type_id)
)engine=MyISAM charset=utf8;

#创建商品表
DROP TABLE IF EXISTS `ugo_goods`;
create table ugo_goods(
goods_id int unsigned not null auto_increment primary key comment '商品ID',
goods_sn varchar(30) not null default '' comment '商品货号',
goods_name varchar(100) not null default '' comment '商品名称',
goods_brief varchar(255) not null default '' comment '商品简单描述',
goods_slogan varchar(50) not null default '' comment '商品宣传语',
goods_desc text comment '商品详情',
cat_id smallint unsigned not null default 0 comment '商品所属类别ID',
brand_id smallint unsigned not null default 0 comment '商品所属品牌ID',
market_price decimal(10,2) not null default 0 comment '市场价格',
promote_price decimal(10,2) not null default 0 comment '促销价格',
promote_start_time int unsigned not null default 0 comment '促销起始时间',
promote_end_time int unsigned not null default 0 comment '促销截止时间',
goods_img varchar(50) not null default '' comment '商品图片',
goods_thumb varchar(50) not null default '' comment '商品缩略图',
goods_number smallint unsigned not null default 0 comment '商品库存',
click_count int unsigned not null default 0 comment '点击次数',
type_id smallint unsigned not null default 0 comment '商品类型ID',
is_promote tinyint unsigned not null default 0 comment '是否促销,默认为0不促销',
is_best tinyint unsigned not null default 0 comment '是否精品,默认为0',
is_new tinyint unsigned not null default 0 comment '是否新品,默认为0',
is_hot tinyint unsigned not null default 0 comment '是否热卖,默认为0',
is_onsale tinyint unsigned not null default 1 comment '是否上架,默认为1',
add_time int unsigned not null default 0 comment '添加时间',
index cat_id(cat_id),
index brand_id(brand_id),
index type_id(type_id)
)engine=MyISAM charset=utf8;

#创建商品属性对应表
DROP TABLE IF EXISTS `ugo_goods_attr`;
create table ugo_goods_attr(
goods_attr_id int unsigned not null auto_increment primary key comment '编号ID',
goods_id int unsigned not null default 0 comment '商品ID',
attr_id smallint unsigned not null default 0 comment '属性ID',
attr_value varchar(255) not null default '' comment '属性值',
attr_price decimal(10,2) not null default 0 comment '属性价格',
index goods_id(goods_id),
index attr_id(attr_id)
)engine=MyISAM charset=utf8;

#创建商品相册表
DROP TABLE IF EXISTS `ugo_gallery`;
create table ugo_gallery(
img_id int unsigned not null auto_increment primary key comment '图片编号',
goods_id int unsigned not null default 0 comment '商品ID',
img_url varchar(50) not null default '' comment '图片URL',
thumb_url varchar(50) not null default '' comment '缩略图URL',
img_desc varchar(50) not null default '' comment '图片描述',
index goods_id(goods_id)
)engine=MyISAM charset=utf8;

/*------------------------------------商品模块 end-----------------------------------*/


/*------------------------------------用户模块---------------------------------------*/
#创建用户表
DROP TABLE IF EXISTS `ugo_user`;
create table ugo_user(
user_id int unsigned not null auto_increment primary key comment '用户编号',
user_name varchar(50) not null default '' comment '用户名',
tel char(12) not null default '' comment '手机号码',
email varchar(50) not null default '' comment '电子邮箱',
password char(32) not null default '' comment '用户密码,md5加密',
reg_time int unsigned not null default 0 comment '用户注册时间'
)engine=MyISAM charset=utf8;

#创建用户收货地址表
DROP TABLE IF EXISTS `ugo_address`;
create table ugo_address(
address_id int unsigned not null auto_increment primary key comment '地址编号',
user_id int unsigned not null default 0 comment '地址所属用户ID',
consignee varchar(60) not null default '' comment '收货人姓名',
province smallint unsigned not null default 0 comment '省份,保存是ID',
city smallint unsigned not null default 0 comment '市',
district smallint unsigned not null default 0 comment '区',
street varchar(100) not null default '' comment '街道地址',
zipcode varchar(10) not null default '' comment '邮政编码',
telephone varchar(20) not null default '' comment '电话',
mobile varchar(20) not null default '' comment '移动电话',
index user_id(user_id)
)engine=MyISAM charset=utf8;

#创建地区表,包括省市区三级
DROP TABLE IF EXISTS `ugo_region`;
create table ugo_region(
region_id smallint unsigned not null auto_increment primary key comment '地区ID',
parent_id smallint unsigned not null default 0 comment '父ID',
region_name varchar(30) not null default '' comment '地区名称',
region_type tinyint unsigned not null default 1 comment '地区类型 1 省份 2 市 3 区(县)'
)engine=MyISAM charset=utf8;

#创建购物车表
DROP TABLE IF EXISTS `ugo_cart`;
create table ugo_cart(
cart_id int unsigned not null auto_increment primary key comment '购物车ID',
user_id int unsigned not null default 0 comment '用户ID',
goods_id int unsigned not null default 0 comment '商品ID',
goods_name varchar(100) not null default '' comment '商品名称',
goods_img varchar(50) not null default '' comment '商品图片',
goods_attr varchar(255) not null default '' comment '商品属性',
goods_number smallint unsigned not null default 1 comment '商品数量',
market_price decimal(10,2) not null default 0 comment '市场价格',
goods_price decimal(10,2) not null default 0 comment '成交价格',
subtotal decimal(10,2) not null default 0 comment '小计'
)engine=MyISAM charset=utf8;
/*------------------------------------用户模块 end-----------------------------------*/




/*------------------------------------订单模块---------------------------------------*/
#创建送货方式表
DROP TABLE IF EXISTS `ugo_shipping`;
create table ugo_shipping(
shipping_id tinyint unsigned not null auto_increment primary key comment '编号',
shipping_name varchar(30) not null default '' comment '送货方式名称',
shipping_desc varchar(255) not null default '' comment '送货方式描述',
shipping_fee decimal(10,2) not null default 0 comment '送货费用',
enabled tinyint unsigned not null default 1 comment '是否启用,默认启用'
)engine=MyISAM charset=utf8;


#创建支付方式表
DROP TABLE IF EXISTS `ugo_payment`;
create table ugo_payment(
pay_id tinyint unsigned not null auto_increment primary key comment '支付方式ID',
pay_name varchar(30) not null default '' comment '支付方式名称',
pay_desc varchar(255) not null default '' comment '支付方式描述',
enabled tinyint unsigned not null default 1 comment '是否启用,默认启用'
)engine=MyISAM charset=utf8;


#创建订单表
DROP TABLE IF EXISTS `ugo_order`;
create table ugo_order(
order_id int unsigned not null auto_increment primary key comment '订单ID',
order_sn varchar(30) not null default '' comment '订单号',
user_id int unsigned not null default 0 comment '用户ID',
address_id int unsigned not null default 0 comment '收货地址id',
order_status tinyint unsigned not null default 0 comment '订单状态 1 待付款 2 待发货 3 已发货 4 已完成',
postscripts varchar(255) not null default '' comment '订单附言',
shipping_id tinyint not null default 0 comment '送货方式ID',
pay_id tinyint not null default 0 comment '支付方式ID',
goods_amount decimal(10,2) not null default 0 comment '商品总金额',
order_amount decimal(10,2) not null default 0 comment '订单总金额',
order_time int unsigned not null default 0 comment '下单时间',
index user_id(user_id),
index address_id(address_id),
index pay_id(pay_id),
index shipping_id(shipping_id)
)engine=MyISAM charset=utf8;


#创建订单明细表,即商品订单关系表(多对多)
DROP TABLE IF EXISTS `ugo_order_goods`;
create table ugo_order_goods(
rec_id int unsigned not null auto_increment primary key comment '编号',
order_id int unsigned not null default 0 comment '订单ID',
goods_id int unsigned not null default 0 comment '商品ID',
goods_name varchar(100) not null default '' comment '商品名称',
goods_img varchar(50) not null default '' comment '商品图片',
shop_price decimal(10,2) not null default 0 comment '商品价格',
goods_price decimal(10,2) not null default 0 comment '成交价格',
goods_number smallint unsigned not null default 1 comment '购买数量',
goods_attr varchar(255) not null default '' comment '商品属性',
subtotal decimal(10,2) not null default 0 comment '商品小计'
)engine=MyISAM charset=utf8;

/*------------------------------------订单模块 end-----------------------------------*/
#创建后台管理员表
DROP TABLE IF EXISTS ugo_admin;
CREATE TABLE ugo_admin(
admin_id TINYINT UNSIGNED auto_increment PRIMARY KEY COMMENT '管理员id' ,
admin_name VARCHAR(50) NOT NULL COMMENT '用户名' ,
admin_pwd VARCHAR(50) NOT NULL COMMENT '密码' ,
admin_role_id TINYINT UNSIGNED NOT NULL COMMENT '角色编号'
) ENGINE = INNODB charset = utf8 COMMENT '管理员表';
# 超级管理员测试数据
insert into ugo_admin values (null,'aa','aa',0);

#创建后台权限表
DROP TABLE IF EXISTS ugo_authority;
CREATE TABLE ugo_authority(
auth_id INT UNSIGNED auto_increment PRIMARY KEY COMMENT 'auth_id' ,
auth_name VARCHAR(50) NOT NULL COMMENT '权限名称' ,
auth_pid INT UNSIGNED NOT NULL COMMENT '权限父级id' ,
auth_c VARCHAR(50) NULL COMMENT '控制器名' ,
auth_a VARCHAR(50) NULL COMMENT '方法名' ,
auth_path VARCHAR(50) NULL COMMENT '全路径,格式:父级id-子级id' ,
is_show TINYINT NOT NULL DEFAULT 1 COMMENT '是否显示在导航栏上'
) ENGINE = INNODB charset = utf8 COMMENT '权限表';

#创建后台角色表
DROP TABLE IF EXISTS ugo_role;
CREATE TABLE IF NOT EXISTS ugo_role(
role_id TINYINT UNSIGNED auto_increment PRIMARY KEY COMMENT 'role_id' ,
role_name VARCHAR(50) NOT NULL COMMENT '角色名称' ,
role_auth_ids VARCHAR(255) NOT NULL COMMENT '角色具有权限id的集合,格式1,2,5' ,
role_auth_ac text NOT NULL COMMENT '控制器和方法的组合,格式:控制器-方法名'
) ENGINE = INNODB charset = utf8 COMMENT '角色表';

# *********************************************************** #
-- 插入测试数据
insert into ugo_authority values (1,'商品管理',0,'','',1,1);
insert into ugo_authority values (2,'会员管理',0,'','',2,1);
insert into ugo_authority values (3,'权限管理',0,'','',3,1);

insert into ugo_authority values (4,'商品列表',1,'Goods','show','1-4',1);
insert into ugo_authority values (5,'添加商品',1,'Goods','add','1-5',1);
insert into ugo_authority values (6,'修改商品',1,'Goods','edit','1-6',0);
insert into ugo_authority values (7,'删除商品',1,'Goods','del','1-7',0);

insert into ugo_authority values (8,'会员列表',2,'Role','show','2-12',1);
insert into ugo_authority values (9,'添加会员',2,'Role','add','2-13',1);
insert into ugo_authority values (10,'修改会员',2,'Role','edit','2-14',0);
insert into ugo_authority values (11,'删除会员',2,'Role','del','2-15',0);

insert into ugo_authority values (12,'权限列表',3,'Authority','show','3-8',1);
insert into ugo_authority values (13,'添加权限',3,'Authority','add','3-9',1);
insert into ugo_authority values (14,'修改权限',3,'Authority','edit','3-10',0);
insert into ugo_authority values (15,'删除权限',3,'Authority','del','3-11',0);

insert into ugo_role values (1,'经理','1,4,5','Goods-show,Goods-add');
insert into ugo_role values (2,'主管','1,4','Goods-show');

insert into ugo_admin values (null,'aa','aa',0)
# *********************************************************** #