create database if not exists jspshopping; 
use jspshopping; 
/*1商品表*/ 
create TABLE commodity( 
commodityID varchar(50) not null PRIMARY KEY comment '商品编号', 
commodityName varchar(50) not null comment '商品名称', 
commodityTypeID varchar(50) not null comment '商品类型', 
commodityBrandID varchar(50) not null comment '商品品牌', 
placeOfOrigin varchar(50) comment '商品产地', 
textureOfMaterial varchar(100) comment '商品材质', 
isOnline bit not null DEFAULT 0 comment '商品是否上线,默认为没上线', /*默认为没上线*/ 
describeA varchar(100) not null comment '商品备注描述' 
); 
/*2品牌表*/ 
create Table brand( 
varchar(50) not null PRIMARY KEY comment '品牌编号', 
varchar(50) not null comment '品牌名字', 
int comment '品牌等级' 
); 
/*3商品类型表*/ 
create TABLE category( 
varchar(50) not null PRIMARY KEY comment '类型编号', 
varchar(50) comment '类型名称' 
); 
alter table commodity add CONSTRAINT SP_Type FOREIGN KEY (commodityTypeID) REFERENCES category(categoryID);/*商品表与类型表建立外键*/ 
alter table commodity add CONSTRAINT SP_Brand FOREIGN KEY (commodityBrandID) REFERENCES brand(brandID);/*商品表与品牌表建立外键*/ 
/*4库存表*/ 
CREATE TABLE stock( 
varchar(50) not null PRIMARY KEY comment '库存编号', 
varchar(50) not null comment '商品编号', 
varchar(50) not null comment '商品颜色', 
DECIMAL(8,2) not null comment '商品进价', 
int not null comment '商品总数量', 
int not null comment '商品卖出数量', 
int not null comment '商品剩余数量' 
); 
/*5图片收入表*/ 
CREATE TABLE image( 
varchar(50) not null comment '库存编号', 
varchar(50) not null comment '商品编号', 
varchar(50) not null comment '图片存放路径或图片名称', 
int not null DEFAULT 0 comment '图片类型,默认为基础图片类型,1为主图片,2为广告图片' 
); 
/*6商品上线表*/ 
CREATE TABLE GoOnline( 
varchar(50) not null comment '商品编号', 
bit not null DEFAULT 0 comment '商品是否在线,默认为在线', 
varchar(50) not null comment '商品名称', 
varchar(50) not null comment '商品品牌编号', 
varchar(50) not null comment '商品类型编号', 
int not null DEFAULT 0 comment '是否为广告商品,默认不为广告商品', 
DECIMAL(8,2) not null comment '商品售价' 
); 
/*7商品上下线记录表*/ 
create table GoOrOutonline( 
varchar(50) not null comment '商品编号', 
TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP comment'上下线时间为默认插入数据时间', 
int not null comment '上下线标明,0为上线,1为下线', 
DECIMAL(8,2) comment '上线价格,下线可不必填' 
); 
/*8商品动态表*/ 
create table dynamic( 
varchar(50) not null comment '商品编号', 
number int comment '商品增加数量,不是增加记录则为空', 
DECIMAL(8,2) comment '商品进价修改,同上', 
DECIMAL(8,2) comment '商品售价修改,同上', 
varchar(50) comment '商品颜色,如增加某个颜色商品数量时可填写,不填即增加代表该商品只有一种颜色', 
time TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP comment'修改时间为默认插入数据时间' 
); 
alter table stock add CONSTRAINT KCun_Com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*库存表与商品表建立外键*/ 
alter table image add CONSTRAINT im_sto FOREIGN KEY (stockID) REFERENCES stock(stockID);/*图片表与库存表建立外键*/ 
alter table GoOnline add CONSTRAINT on_com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*商品上线表与商品表建立外键*/ 
alter table GoOrOutonline add CONSTRAINT or_com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*商品上下线记录表与商品表建立外键*/ 
alter table dynamic add CONSTRAINT dy_com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*商品动态表与商品表建立外键*/ 
/*9会员表*/ 
create table Member( 
varchar(11) not null PRIMARY KEY comment '会员手机号', 
varchar(20) not null comment '会员用户名', 
varchar(18) not null comment '会员密码', 
int not null DEFAULT 0 comment '会员消费积分,默认为0分', 
bit not null DEFAULT 0 comment '会员状态,默认为正常' 
); 
/*10会员收货地址信息表*/ 
create table address( 
varchar(50) not null PRIMARY KEY comment '收货地址编号', 
varchar(11) not null comment '会员手机号码', 
varchar(20) not null comment '收货人姓名', 
varchar(11) not null comment '收货人电话', 
varchar(100) not null comment '收货人地址', 
bit not null DEFAULT 0 comment '是否设为默认地址,默认为不设为', 
int comment '地址类型,0代表工作地址,1代表家庭住址,2代表其它地址' 
); 
/*11订单表*/ 
create table orderA( 
varchar(50) not null PRIMARY KEY comment '订单编号', 
varchar(11) not null comment '会员电话', 
varchar(50) not null comment '收货地址编号', 
number int not null comment '商品数量', 
DECIMAL(16,2) not null comment '订单总价', 
bit not null DEFAULT 0 comment'该订单是否已发货,默认为未发货', 
bit not null DEFAULT 0 comment '该订单是否已取消,默认为未取消', 
TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP comment '订单产生时间,为默认插入数据时间' 
); 
/*12订单详情表*/ 
create table orderDetails( 
varchar(50) not null comment '订单编号', 
varchar(50) not null comment '库存编号', 
int not null comment '商品数量', 
DECIMAL(8,2) not null comment '商品单价', 
DECIMAL(16,2) not null comment '商品总价' 
); 
/*13评论记录表*/ 
create table commentA( 
varchar(50) not null PRIMARY KEY comment '评论ID', 
varchar(50) not null comment '商品编号', 
varchar(11) not null comment '会员电话', 
varchar(20) not null comment '会员用户名', 
varchar(100) not null comment '商品评论', 
varchar(100) comment '商家回复,只能商家回复', 
TIMESTAMP not null comment'评论时间', 
TIMESTAMP comment '回复时间' 
); 
/*14浏览足迹记录表*/ 
create table footprint( 
varchar(50) not null PRIMARY KEY comment '浏览足迹编号', 
varchar(11) not null comment '会员电话', 
varchar(50) not null comment '商品编号', 
varchar(50) not null comment '商品主图片路径或名称', 
DECIMAL(8,2) not null comment '商品单价', 
varchar(50) not null comment '商品名字' 
); 
alter table address add CONSTRAINT add_vip FOREIGN KEY (vipPhone) REFERENCES Member(vipPhone);/*收货地址表与会员表建立外键*/ 
alter table orderA add CONSTRAINT ord_add FOREIGN KEY (addressID) REFERENCES address(addressID);/*订单表与收货地址编号建立外键*/ 
alter table orderDetails add CONSTRAINT det_ord FOREIGN KEY (orderID) REFERENCES orderA(orderID);/*订单详情表与订单表建立外键*/ 
alter table orderDetails add CONSTRAINT det_sto FOREIGN KEY (commodityID) REFERENCES stock(stockID);/*订单详情表与库存表建立外键*/ 
alter table commentA add CONSTRAINT comA_com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*评论表与商品表建立外键*/ 
alter table commentA add CONSTRAINT comA_vip FOREIGN KEY (vipPhone) REFERENCES Member(vipPhone);/*评论表与会员表建立外键*/ 
alter table footprint add CONSTRAINT foot_com FOREIGN KEY (commodityID) REFERENCES commodity(commodityID);/*浏览足迹表与商品表建立外键*/ 
alter table footprint add CONSTRAINT foot_vip FOREIGN KEY (vipPhone) REFERENCES Member(vipPhone);/*浏览足迹表与会员表建立外键*/ 
/*15员工表*/ 
create table Employee( 
varchar(50) not null PRIMARY KEY comment '员工编号', 
date not null comment '出生年月', 
varchar(1) not null comment '性别', 
varchar(11) not null comment '电话号码', 
varchar(18) not null comment '身份证号码', 
varchar(50) not null comment '本人照片', 
varchar(100) not null comment '现居地址', 
varchar(20) not null comment '紧急联系人', 
varchar(11) not null comment '紧急联系电话', 
bit not null DEFAULT 0 comment '员工状态,默认为正常' 
); 
/*16权限详情表*/ 
create table Jurisdiction( 
varchar(50) not null PRIMARY KEY comment '权限详情编号', 
varchar(20) not null comment '权限名', 
varchar(100) comment '权限功能描述', 
bit not null DEFAULT 0 comment '权限状态,默认为正常' 
); 
/*17账号表*/ 
create table accountNumber( 
varchar(50) not null PRIMARY KEY comment '账号ID', 
varchar(18) not null comment '账号密码', 
varchar(50) not null comment '账号对应的员工编号', 
bit not null DEFAULT 0 comment '账号使用状态,默认为正常' 
); 
/*18权限使用表*/ 
create table distribution( 
varchar(50) not null comment '员工编号', 
varchar(50) not null comment '权限编号', 
bit not null DEFAULT 0 comment '使用状态,默认为正常使用' 
); 
alter table accountNumber add CONSTRAINT acc_emp FOREIGN KEY (accountNumberEmID) REFERENCES Employee(employeeID);/*账号表与员工表建立外键*/ 
alter table distribution add CONSTRAINT dis_emp FOREIGN KEY (employeeID) REFERENCES Employee(employeeID);/*权限使用表与员工表建立外键*/ 
alter table distribution add CONSTRAINT dis_jur FOREIGN KEY (jurisdictionID) REFERENCES jurisdiction(jurisdictionID);/*权限使用表与权限详情表建立外键*/