引言
本文代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop
在上一篇博客《淘东电商项目(38) -Docker下安装ES&Kibana(一次填完所有的坑)》,主要讲解了在docker下安装ES和Kibana,作为商品搜索功能的搜索引擎。本文开始讲解商品搜索数据库的设计。
本文目录结构:
l____引言
l____ 1. 数据库设计工具PDMan
l____ 2. 数据库表设计
l________ 2.1 商品分类信息表(category)
l________ 2.2 商品规格Key表(attribute_key)
l________ 2.3 商品规格值表(attribute_value)
l________ 2.4 商品信息表(product)
l________ 2.5 商品规格表(product_specs)
l____ 总结
1. 数据库设计工具PDMan
数据库设计工具在之前的文章我有写过,因为我开发使用的是Mac,所以不能使用PowerDesign,所以选择了PDMan,如果有兴趣的同学可以参考我的博客:
《Mac 数据库模型建模工具PDMan(PowerDesigner替代品)》。
2. 数据库表设计
商品搜索服务涉及到的表一共五张表:
category
- 「商品分类信息表」attribute_key
- 「商品规格Key表」attribute_value
- 「商品规格值表」product
- 「商品信息表」product_specs
- 「商品规格表」
2.1 商品分类信息表(category)
表设计如下:
建表SQL:
CREATE TABLE `category` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`PARENT_ID` int(11) DEFAULT NULL COMMENT '父ID',
`NAME` varchar(128) DEFAULT NULL COMMENT '名称',
`STATUS` int(11) DEFAULT NULL COMMENT '状态',
`SORT_ORDER` int(11) DEFAULT NULL COMMENT '分类顺序',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='商品分类 商品分类信息表';
2.2 商品规格Key表(attribute_key)
表设计如下:
建表SQL:
CREATE TABLE `attribute_key` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`CATEGORY_ID` int(11) DEFAULT NULL COMMENT '分类ID',
`ATTRIBUTE_NAME` varchar(32) DEFAULT NULL COMMENT '属性名称',
`NAME_SORT` varchar(32) DEFAULT NULL COMMENT '名称排序',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='商品规格Key表 ';
2.3 商品规格值表(attribute_value)
表设计如下:
建表SQL:
CREATE TABLE `attribute_value` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`ATTRIBUTE_ID` varchar(32) DEFAULT NULL COMMENT '属性ID',
`ATTRIBUTE_VALUE` varchar(32) DEFAULT NULL COMMENT '属性值',
`VALUE_SORT` varchar(32) DEFAULT NULL COMMENT '值排序',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='商品规格值表 ';
2.4 商品信息表(product)
表设计如下:
建表SQL:
CREATE TABLE `product` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`CATEGORY_ID` int(11) DEFAULT NULL COMMENT '类型ID',
`NAME` varchar(128) DEFAULT NULL COMMENT '名称',
`SUBTITLE` varchar(128) DEFAULT NULL COMMENT '小标题',
`MAIN_IMAGE` varchar(128) DEFAULT NULL COMMENT '主图像',
`SUB_IMAGES` text COMMENT '小标题图像',
`DETAIL` text COMMENT '描述',
`ATTRIBUTE_LIST` varchar(128) DEFAULT NULL COMMENT '商品规格',
`PRICE` decimal(32,8) DEFAULT NULL COMMENT '价格',
`STOCK` int(11) DEFAULT NULL COMMENT '库存',
`STATUS` int(11) DEFAULT NULL COMMENT '状态',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='商品信息表';
2.5 商品规格表(product_specs)
表设计如下:
建表SQL:
CREATE TABLE `product_specs` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`PRODUCT_ID` int(11) DEFAULT NULL COMMENT '商品ID',
`PRODUCT_SPECS` text COMMENT '商品规格',
`SPECS_SEQ` int(11) DEFAULT NULL COMMENT '规格顺序',
`PRODUCT_STOCK` int(11) DEFAULT NULL COMMENT '商品库存',
`PRODUCT_PRICE` decimal(32,8) DEFAULT NULL COMMENT '商品价格',
`REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='商品规格表 ';
总结
本文主要讲解了数据库工具PDMan的介绍以及商品搜索服务数据库表设计。