huchong

一. 用户实体

1. 用户登录表(customer_login)

CREATE TABLE `customer_login` (
  `customer_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'用户ID\',
  `login_name` varchar(20) NOT NULL COMMENT \'用户登陆名\',
  `password` char(32) NOT NULL COMMENT \'md5加密的密码\',
  `user_stats` tinyint NOT NULL DEFAULT \'1\' COMMENT \'用户状态\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`customer_id`)
) ENGINE=InnoDB  COMMENT=\'用户登陆表\';

2. 用户信息表(customer_inf)

CREATE TABLE `customer_inf` (
  `customer_inf_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'自增主键ID\',
  `customer_id` int  unsigned NOT NULL COMMENT \'customer_login表的自增ID\',
  `customer_name` varchar(20) NOT NULL COMMENT \'用户真实姓名\',
  `identity_card_type` tinyint  NOT NULL DEFAULT \'1\' COMMENT \'证件类型:1 身份证,2军官证,3护照\',
  `identity_card_no` varchar(20) DEFAULT NULL COMMENT \'证件号码\',
  `mobile_phone` int  unsigned DEFAULT NULL COMMENT \'手机号\',
  `customer_email` varchar(50) DEFAULT NULL COMMENT \'邮箱\',
  `gender` char(1) DEFAULT NULL COMMENT \'性别\',
  `user_point` int  NOT NULL DEFAULT \'0\' COMMENT \'用户积分\',
  `register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'注册时间\',
  `birthday` datetime DEFAULT NULL COMMENT \'会员生日\',
  `customer_level` tinyint  NOT NULL DEFAULT \'1\' COMMENT \'会员级别:1普通会员,2青铜会员,3白银会员,4黄金会员,5钻石会员\',
  `user_money` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'用户余额\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`customer_inf_id`)
) ENGINE=InnoDB  COMMENT=\'用户信息表\';

3. 用户级别表(customer_level_inf)

CREATE TABLE `customer_level_inf` (
  `customer_level` tinyint  NOT NULL AUTO_INCREMENT COMMENT \'会员级别ID\',
  `level_name` varchar(10) NOT NULL COMMENT \'会员级别名称\',
  `min_point` int unsigned NOT NULL DEFAULT 0 COMMENT \'该级别最低积分\',
  `max_point` int unsigned NOT NULL DEFAULT 0 COMMENT \'该级别最高积分\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`customer_level`)
) ENGINE=InnoDB  COMMENT=\'用户信息表\';

4. 用户地址表(order_customer_addr)

CREATE TABLE `order_customer_addr` (
  `customer_addr_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'自增主键ID\',
  `customer_id` int unsigned NOT NULL COMMENT \'customer_login表的自增ID\',
  `zip` smallint NOT NULL COMMENT \'邮编\',
  `province` smallint NOT NULL COMMENT \'地区表中省份的id\',
  `city` smallint NOT NULL COMMENT \'地区表中城市的id\',
  `district` smallint NOT NULL COMMENT \'地区表中的区id\',
  `address` varchar(200) NOT NULL COMMENT \'具体的地址门牌号\',
  `is_default` tinyint NOT NULL COMMENT \'是否默认\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`customer_addr_id`)
) ENGINE=InnoDB  COMMENT=\'用户地址表\';

5. 用户积分日志表(customer_point_log)

CREATE TABLE `customer_point_log` (
  `point_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'积分日志ID\',
  `customer_id` int  unsigned NOT NULL COMMENT \'用户ID\',
  `source` tinyint  unsigned NOT NULL COMMENT \'积分来源:0订单,1登录,2活动\',
  `refer_number` int  unsigned NOT NULL DEFAULT \'0\' COMMENT \'积分来源相关编号\',
  `change_point` smallint  NOT NULL DEFAULT \'0\' COMMENT \'变更积分数\',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'积分日志生成时间\',
  PRIMARY KEY (`point_id`)
) ENGINE=InnoDB  COMMENT=\'用户积分日志表\';

6. 用户余额变动表(customer_balance_log)

CREATE TABLE `customer_balance_log` (
  `balance_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'余额日志id\',
  `customer_id` int  unsigned NOT NULL COMMENT \'用户ID\',
  `source` tinyint  unsigned NOT NULL DEFAULT \'1\' COMMENT \'记录来源:1订单,2退货单\',
  `source_sn` int  unsigned NOT NULL COMMENT \'相关单据ID\',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'记录生成时间\',
  `amount` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'变动金额\',
  PRIMARY KEY (`balance_id`)
) ENGINE=InnoDB  COMMENT=\'用户余额变动表\';

7. 用户登录日志表(customer_login_log)

CREATE TABLE `customer_login_log` (
 `login_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'登录日志ID\',
 `customer_id` int  unsigned NOT NULL COMMENT \'登录用户ID\',
 `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'用户登录时间\',
 `login_ip` int  unsigned NOT NULL COMMENT \'登录IP\',
 `login_type` tinyint  NOT NULL COMMENT \'登录类型:0未成功 1成功\',
 PRIMARY KEY (`login_id`)
) ENGINE=InnoDB  COMMENT=\'用户登录日志表\';

二. 商品实体

1. 品牌信息表(product_brand_info)

CREATE TABLE `product_brand_info` (
  `brand_id` smallint unsigned NOT NULL AUTO_INCREMENT COMMENT \'品牌ID\',
  `brand_name` varchar(50) NOT NULL COMMENT \'品牌名称\',
  `telephone` varchar(50) NOT NULL COMMENT \'联系电话\',
  `brand_web` varchar(100) DEFAULT NULL COMMENT \'品牌网站\',
  `brand_logo` varchar(100) DEFAULT NULL COMMENT \'品牌logo URL\',
  `brand_desc` varchar(150) DEFAULT NULL COMMENT \'品牌描述\',
  `brand_status` tinyint NOT NULL DEFAULT \'0\' COMMENT \'品牌状态,0禁用,1启用\',
  `brand_order` tinyint NOT NULL DEFAULT \'0\' COMMENT \'排序\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`brand_id`)
) ENGINE=InnoDB  COMMENT=\'品牌信息表\';

2. 商品分类表(product_category)

CREATE TABLE `product_category` (
  `category_id` smallint unsigned NOT NULL AUTO_INCREMENT COMMENT \'分类ID\',
  `category_name` varchar(10)  NOT NULL COMMENT \'分类名称\',
  `category_code` varchar(10)  NOT NULL COMMENT \'分类编码\',
  `parent_id` smallint  unsigned NOT NULL DEFAULT \'0\' COMMENT \'父分类ID\',
  `category_level` tinyint  NOT NULL DEFAULT \'1\' COMMENT \'分类层级\',
  `category_status` tinyint NOT NULL DEFAULT \'1\' COMMENT \'分类状态\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  COMMENT=\'商品分类表\';

3. 供应商信息表(product_supplier_info)

CREATE TABLE `product_supplier_info` (
  `supplier_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'供应商ID\',
  `supplier_code` char(8) NOT NULL COMMENT \'供应商编码\',
  `supplier_name` char(50) NOT NULL COMMENT \'供应商名称\',
  `supplier_type` tinyint  NOT NULL COMMENT \'供应商类型:1.自营,2.平台\',
  `link_man` varchar(10) NOT NULL COMMENT \'供应商联系人\',
  `phone_number` varchar(50) NOT NULL COMMENT \'联系电话\',
  `bank_name` varchar(50) NOT NULL COMMENT \'供应商开户银行名称\',
  `bank_account` varchar(50) NOT NULL COMMENT \'银行账号\',
  `address` varchar(200) NOT NULL COMMENT \'供应商地址\',
  `supplier_status` tinyint NOT NULL DEFAULT \'0\' COMMENT \'状态:0禁用,1启用\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`supplier_id`)
) ENGINE=InnoDB  COMMENT=\'供应商信息表\';

4. 商品信息表(product_info)

CREATE TABLE `product_info` (
  `product_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'商品ID\',
  `product_code` char(16) NOT NULL COMMENT \'商品编码\',
  `product_name` varchar(50) NOT NULL COMMENT \'商品名称\',
  `bar_code` varchar(50) NOT NULL COMMENT \'国条码\',
  `brand_id` int  unsigned NOT NULL COMMENT \'品牌表的ID\',
  `one_category_id` smallint unsigned NOT NULL COMMENT \'一级分类ID\',
  `two_category_id` smallint  unsigned NOT NULL COMMENT \'二级分类ID\',
  `three_category_id` smallint  unsigned NOT NULL COMMENT \'三级分类ID\',
  `supplier_id` int  unsigned NOT NULL COMMENT \'商品的供应商id\',
  `price` decimal(8,2) NOT NULL COMMENT \'商品销售价格\',
  `average_cost` decimal(18,2) NOT NULL COMMENT \'商品加权平均成本\',
  `publish_status` tinyint  NOT NULL DEFAULT \'0\' COMMENT \'上下架状态:0下架1上架\',
  `audit_status` tinyint  NOT NULL DEFAULT \'0\' COMMENT \'审核状态:0未审核,1已审核\',
  `weight` float DEFAULT NULL COMMENT \'商品重量\',
  `length` float DEFAULT NULL COMMENT \'商品长度\',
  `heigh` float DEFAULT NULL COMMENT \'商品高度\',
  `width` float DEFAULT NULL COMMENT \'商品宽度\',
  `color_type` enum(\'红\',\'黄\',\'蓝\',\'黒\') DEFAULT NULL,
  `production_date` datetime NOT NULL COMMENT \'生产日期\',
  `shelf_life` int  NOT NULL COMMENT \'商品有效期\',
  `descript` text NOT NULL COMMENT \'商品描述\',
  `indate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'商品录入时间\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`product_id`)
) ENGINE=InnoDB  COMMENT=\'商品信息表\';

5. 商品图片信息表(product_pic_info)

CREATE TABLE `product_pic_info` (
  `product_pic_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'商品图片ID\',
  `product_id` int  unsigned NOT NULL COMMENT \'商品ID\',
  `pic_desc` varchar(50) DEFAULT NULL COMMENT \'图片描述\',
  `pic_url` varchar(200) NOT NULL COMMENT \'图片URL\',
  `is_master` tinyint  NOT NULL DEFAULT \'0\' COMMENT \'是否主图:0.非主图1.主图\',
  `pic_order` tinyint  NOT NULL DEFAULT \'0\' COMMENT \'图片排序\',
  `pic_status` tinyint  NOT NULL DEFAULT \'1\' COMMENT \'图片是否有效:0无效 1有效\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`product_pic_id`)
) ENGINE=InnoDB   COMMENT=\'商品图片信息表\';

6. 商品评论表(product_comment)

CREATE TABLE `product_comment` (
  `comment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT \'评论ID\',
  `product_id` int unsigned NOT NULL COMMENT \'商品ID\',
  `order_id` bigint unsigned NOT NULL COMMENT \'订单ID\',
  `customer_id` int unsigned NOT NULL COMMENT \'用户ID\',
  `title` varchar(50) NOT NULL COMMENT \'评论标题\',
  `content` varchar(300) NOT NULL COMMENT \'评论内容\',
  `audit_status` tinyint NOT NULL COMMENT \'审核状态:0未审核1已审核\',
  `audit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'评论时间\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`comment_id`)
) ENGINE=InnoDB  COMMENT=\'商品评论表\';

三. 订单实体

1. 订单主表(order_master)

CREATE TABLE `order_master` (
  `order_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'订单ID\',
  `order_sn` bigint(20) unsigned NOT NULL COMMENT \'订单编号 yyyymmddnnnnnnnn\',
  `customer_id` int  unsigned NOT NULL COMMENT \'下单人ID\',
  `shipping_user` varchar(10) NOT NULL COMMENT \'收货人姓名\',
  `province` smallint NOT NULL COMMENT \'收货人所在省\',
  `city` smallint  NOT NULL COMMENT \'收货人所在市\',
  `district` smallint  NOT NULL COMMENT \'收货人所在区\',
  `address` varchar(100) NOT NULL COMMENT \'收货人详细地址\',
  `payment_method` tinyint  NOT NULL COMMENT \'支付方式:1现金,2余额,3网银,4支付宝,5微信\',
  `order_money` decimal(8,2) NOT NULL COMMENT \'订单金额\',
  `district_money` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'优惠金额\',
  `shipping_money` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'运费金额\',
  `payment_money` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'支付金额\',
  `shipping_comp_name` varchar(10) DEFAULT NULL COMMENT \'快递公司名称\',
  `shipping_sn` varchar(50) DEFAULT NULL COMMENT \'快递单号\',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'下单时间\',
  `shipping_time` datetime DEFAULT NULL COMMENT \'发货时间\',
  `pay_time` datetime DEFAULT NULL COMMENT \'支付时间\',
  `receive_time` datetime DEFAULT NULL COMMENT \'收货时间\',
  `order_status` tinyint  NOT NULL DEFAULT \'0\' COMMENT \'订单状态\',
  `order_point` int  unsigned NOT NULL DEFAULT \'0\' COMMENT \'订单积分\',
  `invoice_title` varchar(100) DEFAULT NULL COMMENT \'发票抬头\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`order_id`),
  UNIQUE KEY `ux_ordersn` (`order_sn`)
) ENGINE=InnoDB   COMMENT=\'订单主表\';

2. 订单详情表(order_detail)

CREATE TABLE `order_detail` (
  `order_detail_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'自增主键ID,订单详情表ID\',
  `order_id` int  unsigned NOT NULL COMMENT \'订单表ID\',
  `product_id` int  unsigned NOT NULL COMMENT \'订单商品ID\',
  `product_name` varchar(50) NOT NULL COMMENT \'商品名称\',
  `product_cnt` int  NOT NULL DEFAULT \'1\' COMMENT \'购买商品数量\',
  `product_price` decimal(8,2) NOT NULL COMMENT \'购买商品单价\',
  `average_cost` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'平均成本价格\',
  `weight` float DEFAULT NULL COMMENT \'商品重量\',
  `fee_money` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'优惠分摊金额\',
  `w_id` int  unsigned NOT NULL COMMENT \'仓库ID\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`order_detail_id`)
) ENGINE=InnoDB   COMMENT=\'订单详情表\';

3. 购物车表(order_cart)

CREATE TABLE `order_cart` (
  `cart_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'购物车ID\',
  `customer_id` int  unsigned NOT NULL COMMENT \'用户ID\',
  `product_id` int  unsigned NOT NULL COMMENT \'商品ID\',
  `product_amount` int  NOT NULL COMMENT \'加入购物车商品数量\',
  `price` decimal(8,2) NOT NULL COMMENT \'商品价格\',
  `add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'加入购物车时间\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`cart_id`)
) ENGINE=InnoDB   COMMENT=\'购物车表\';

4. 仓库信息表(warehouse_info)

CREATE TABLE `warehouse_info` (
  `w_id` smallint  unsigned NOT NULL AUTO_INCREMENT COMMENT \'仓库ID\',
  `warehouse_sn` char(5) NOT NULL COMMENT \'仓库编码\',
  `warehouse_name` varchar(10) NOT NULL COMMENT \'仓库名称\',
  `warehouse_phone` varchar(20) NOT NULL COMMENT \'仓库电话\',
  `contact` varchar(10) NOT NULL COMMENT \'仓库联系人\',
  `province` smallint  NOT NULL COMMENT \'省\',
  `city` smallint  NOT NULL COMMENT \'市\',
  `district` smallint  NOT NULL COMMENT \'区\',
  `address` varchar(100) NOT NULL COMMENT \'仓库地址\',
  `warehouse_status` tinyint  NOT NULL DEFAULT \'1\' COMMENT \'仓库状态:0禁用,1启用\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`w_id`)
) ENGINE=InnoDB   COMMENT=\'仓库信息表\';

5. 商品库存表(warehouse_proudct)

CREATE TABLE `warehouse_proudct` (
  `wp_id` int  unsigned NOT NULL AUTO_INCREMENT COMMENT \'商品库存ID\',
  `product_id` int  unsigned NOT NULL COMMENT \'商品id\',
  `w_id` smallint  unsigned NOT NULL COMMENT \'仓库ID\',
  `currnet_cnt` int  unsigned NOT NULL DEFAULT \'0\' COMMENT \'当前商品数量\',
  `lock_cnt` int  unsigned NOT NULL DEFAULT \'0\' COMMENT \'当前占用数据\',
  `in_transit_cnt` int  unsigned NOT NULL DEFAULT \'0\' COMMENT \'在途数据\',
  `average_cost` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'移动加权成本\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`wp_id`)
) ENGINE=InnoDB  COMMENT=\'商品库存表\';

6. 物流公司信息表(shipping_info)

CREATE TABLE `shipping_info` (
  `ship_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT \'主键id\',
  `ship_name` varchar(20) NOT NULL COMMENT \'物流公司名称\',
  `ship_contact` varchar(20) NOT NULL COMMENT \'物流公司联系人\',
  `telphone` varchar(20) NOT NULL COMMENT \'物流公司联系电话\',
  `price` decimal(8,2) NOT NULL DEFAULT \'0.00\' COMMENT \'配送价格\',
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'最后修改时间\',
  PRIMARY KEY (`ship_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=\'物流公司信息表\';

四. DB规划

  • 为以后数据库迁移提供方便
  • 避免跨库操作,把经常一起关联查询的表放到一个DB中
  • 为了方便识别表所在DB,在表名前增加库名前缀

用户数据库(mc_userdb):用户信息表(customer_inf)、用户登录表(customer_login)、 用户级别表(customer_level_inf)、用户积分日志表(customer_point_log)、用户余额变动表(customer_balance_log)、 用户登录日志表(customer_login_log)
商品数据库(mc_productdb):品牌信息表(product_brand_info)、商品分类表(product_category)、供应商信息表(product_supplier_info)、商品信息表(product_info)、商品图片信息表(product_pic_info)、商品评论表(product_comment)
订单数据库(mc_orderdb):订单主表(order_master)、订单详情表(order_detail)、用户地址表(customer_addr)、仓库信息表(warehouse_info)、物流公司信息表(shipping_info)、 购物车表(order_cart)

分类:

技术点:

相关文章: