电商数据模型主要涉及到商品,订单,物流,库存等,整体的设计模型如下:
上述模型可以继续按照功能分为两个库:商品库和订单库
商品库主要是管理商品SPU,SKU,库存等
订单库主要管理订单,物流等信息
完整的SQL脚本如下:
DROP TABLE IF EXISTS `order_t`;
CREATE TABLE `order_t`
(
`order_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'order_id主键',
`order_no` varchar(32) DEFAULT NULL COMMENT '订单编号',
`user_id` bigint(10) NOT NULL COMMENT '用户ID',
`order_amount` decimal(16, 2) NOT NULL COMMENT '订单金额',
`delivery_amount` decimal(16, 2) DEFAULT 0 COMMENT '运费',
`total_amount` decimal(16, 2) NOT NULL COMMENT '汇总金额',
`receiver_id` bigint(10) NOT NULL COMMENT '收货地址ID',
`status` tinyint(4) DEFAULT 1 COMMENT '状态,1:已提交,2:已付款,3:待发货,4:已发货,5:已收货,6:已完成',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除标志,0:未删除,1:已删除',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`order_id`),
KEY `idx_useId` (`user_id`),
KEY `idx_orderNo` (`order_no`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='订单表';
DROP TABLE IF EXISTS `receiver_info_t`;
CREATE TABLE `receiver_info_t`
(
`receiver_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'receiver_id主键',
`user_id` bigint(10) NOT NULL COMMENT '用户ID',
`receiver_name` varchar(64) DEFAULT NULL COMMENT '收件人姓名',
`receiver_telephone` varchar(32) NOT NULL COMMENT '收件人电话',
`receiver_address` varchar(256) NOT NULL COMMENT '收件人地址',
`default_flag` tinyint(4) DEFAULT 0 COMMENT '是否默认地址,0:否,1:是',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`receiver_id`),
UNIQUE KEY `uk_useId` (`user_id`, `receiver_name`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='用户收货地址表';
DROP TABLE IF EXISTS `category_t`;
CREATE TABLE `category_t`
(
`category_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键(自增ID)',
`code` varchar(64) NOT NULL COMMENT '编码',
`name` varchar(128) NOT NULL COMMENT '名称',
`parent_id` int(10) NOT NULL DEFAULT '0' COMMENT '父级ID,默认为0',
`sort` int(8) DEFAULT '0' COMMENT '分类排序',
`status` tinyint(4) DEFAULT '0' COMMENT '状态(0:在用,1:停用)',
`remarks` varchar(255) DEFAULT NULL COMMENT '分类备注',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`category_id`),
UNIQUE KEY `unique_code` (`code`),
UNIQUE KEY `unique_name` (`name`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='类别表';
DROP TABLE IF EXISTS `brand_t`;
CREATE TABLE `brand_t`
(
`brand_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '品牌id',
`name` varchar(64) NOT NULL COMMENT '品牌名称',
`image` varchar(256) NULL DEFAULT '' COMMENT '品牌图片地址',
`initial` varchar(1) DEFAULT '' COMMENT '品牌的首字母',
`sort` int(8) NULL DEFAULT NULL COMMENT '排序',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`brand_id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT ='品牌类别关联表';
DROP TABLE IF EXISTS `category_brand_rel_t`;
CREATE TABLE `category_brand_rel_t`
(
`category_id` bigint(10) NOT NULL COMMENT '分类ID',
`brand_id` bigint(10) NOT NULL COMMENT '品牌ID',
PRIMARY KEY (`brand_id`, `category_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8 COMMENT ='品牌类别关联表';
DROP TABLE IF EXISTS `commodity_spu_t`;
CREATE TABLE `commodity_spu_t`
(
`spu_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'id主键',
`category_id` int(10) NOT NULL COMMENT '商品分类ID',
`brand_id` bigint(10) DEFAULT NULL COMMENT '品牌ID',
`code` varchar(32) DEFAULT NULL COMMENT '商品编码',
`name` varchar(128) DEFAULT NULL COMMENT '商品名称',
`description` varchar(512) DEFAULT NULL COMMENT '商品描述',
`marketable` tinyint(4) DEFAULT 0 COMMENT '上架状态,0:未上架,2:已上架',
`approve_status` tinyint(4) DEFAULT 0 COMMENT '审批状态,0:未审核,1:已审核,2:审核不通过',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除标志,0:未删除,1:已删除',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`spu_id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_name` (`name`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='商品SPU表';
DROP TABLE IF EXISTS `commodity_spu_img_t`;
CREATE TABLE `commodity_spu_img_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`spu_id` bigint(10) DEFAULT NULL COMMENT '商品SPU id',
`image` varchar(256) DEFAULT NULL COMMENT '图片路径',
`sort` int(8) NULL DEFAULT NULL COMMENT '排序',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '商品SPU图片集合';
DROP TABLE IF EXISTS `commodity_sku_t`;
CREATE TABLE `commodity_sku_t`
(
`sku_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`spu_id` bigint(10) NULL DEFAULT NULL COMMENT '商品SPU id',
`name` varchar(256) DEFAULT NULL COMMENT 'SKU名称',
`code` varchar(35) DEFAULT NULL COMMENT 'SKU编号',
`description` varchar(512) DEFAULT NULL COMMENT '规格描述',
`sale_volume` int(10) DEFAULT NULL COMMENT '销量',
`price` decimal(16, 2) NULL DEFAULT NULL COMMENT '价格',
`marketable` tinyint(4) DEFAULT 0 COMMENT '上架状态,0:未上架,2:已上架',
`deleted` tinyint(4) DEFAULT 0 COMMENT '删除标志,0:未删除,1:已删除',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`sku_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '商品规格';
DROP TABLE IF EXISTS `attribute_t`;
CREATE TABLE `attribute_t`
(
`attr_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(64) DEFAULT NULL COMMENT '名称',
`value` varchar(256) DEFAULT NULL COMMENT '属性值',
`status` tinyint(4) DEFAULT 0 COMMENT '状态, 0:生效,1:失效',
`type` tinyint(4) DEFAULT 1 COMMENT '属性类型 1 规格属性 2 销售属性',
`category_id` bigint(10) DEFAULT NULL COMMENT '分类id',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`attr_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '属性表';
DROP TABLE IF EXISTS `commodity_sku_attr_rel_t`;
CREATE TABLE `commodity_sku_attr_rel_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`sku_id` bigint(10) NULL DEFAULT NULL COMMENT '商品SKU ID',
`attr_id` bigint(10) NULL DEFAULT NULL COMMENT '属性id',
`sort` int(8) NULL DEFAULT NULL COMMENT '排序',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '商品规格SKU属性关联表';
DROP TABLE IF EXISTS `commodity_spu_attr_rel_t`;
CREATE TABLE `commodity_spu_attr_rel_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`spu_id` bigint(10) NULL DEFAULT NULL COMMENT '商品SPU ID',
`attr_id` bigint(10) NULL DEFAULT NULL COMMENT '属性id',
`sort` int(8) NULL DEFAULT NULL COMMENT '排序',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '商品SPU属性关联表';
DROP TABLE IF EXISTS `commodity_sku_img_t`;
CREATE TABLE `commodity_sku_img_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`sku_id` bigint(10) DEFAULT NULL COMMENT '商品SKU id',
`image` varchar(256) DEFAULT NULL COMMENT '图片路径',
`sort` int(8) NULL DEFAULT NULL COMMENT '排序',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT = '商品SKU图片集合';
DROP TABLE IF EXISTS `commodity_stock_t`;
CREATE TABLE `commodity_stock_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`sku_id` bigint(10) NOT NULL COMMENT '商品SKU id',
`quantity` int(10) NULL DEFAULT 0 COMMENT '库存数量',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY uk_skuId (`sku_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8
COMMENT = '商品规格SKU库存';
DROP TABLE IF EXISTS `order_commodity_rel_t`;
CREATE TABLE `order_commodity_rel_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
`order_id` bigint(10) DEFAULT NULL COMMENT '订单ID',
`sku_id` bigint(10) NOT NULL COMMENT '商品SKU id',
`quantity` bigint(10) DEFAULT 0 COMMENT '购买数量',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_orderSkuId` (`order_id`, `sku_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='订单商品关联表';
DROP TABLE IF EXISTS `order_delivery_rel_t`;
CREATE TABLE `order_delivery_rel_t`
(
`id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
`order_id` bigint(10) DEFAULT NULL COMMENT '订单ID',
`delivery_id` bigint(10) NOT NULL COMMENT '物流ID',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_orderDeliveryId` (`order_id`, `delivery_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='订单物流关联表';
DROP TABLE IF EXISTS `delivery_t`;
CREATE TABLE `delivery_t`
(
`delivery_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '物流ID',
`delivery_type` tinyint(4) NOT NULL COMMENT '快递类型,1:顺丰,2:圆通,3:中通,4:韵达,5:优速,6:极兔,7:EMS',
`delivery_no` varchar(32) NOT NULL COMMENT '快递单号',
`status` tinyint(4) DEFAULT 0 COMMENT '快递状态,0:已揽件,1:运输中,2:投递中,3:已投递',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`delivery_id`),
UNIQUE KEY `uk_deliveryNo` (`delivery_no`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='快递信息表';
DROP TABLE IF EXISTS `delivery_detail_t`;
CREATE TABLE `delivery_detail_t`
(
`delivery_detail_id` bigint(10) NOT NULL AUTO_INCREMENT COMMENT '物流详细信息表',
`delivery_id` bigint(10) DEFAULT NULL COMMENT '物流ID',
`position` varchar(256) DEFAULT NULL COMMENT '当前位置',
`time` bigint(13) DEFAULT NULL COMMENT '时间',
`create_by` bigint(10) DEFAULT NULL COMMENT '创建人',
`creation_date` datetime DEFAULT NULL COMMENT '创建时间',
`last_update_by` bigint(10) DEFAULT NULL COMMENT '修改人',
`last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`delivery_detail_id`),
KEY `idx_deliveryId` (`delivery_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8 COMMENT ='快递流转详细信息表';