一: 品类表
CREATE TABLE `t_spec_group` (
`id` int UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`spg_id` int UNSIGNED NOT NULL COMMENT '品类编号',
`name` varchar(200) NOT NULL COMMENT '品类名称',
UNIQUE INDEX `unq_spg_id`(`spg_id`),
UNIQUE INDEX `unq_name`(`name`),
INDEX `idx_spg_id`(`spg_id`)
)COMMENT="品类表";
二:参数表
CREATE TABLE `t_spec_param` (
`id` int UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`spg_id` int UNSIGNED NOT NULL COMMENT '品类编号',
`spp_id` int UNSIGNED NOT NULL COMMENT '参数编号',
`name` varchar(200) NOT NULL COMMENT '参数名称',
`numeric` tinyint(1) NOT NULL COMMENT '是否为数字参数',
`unit` varchar(200) COMMENT '单位(量词)',
`generic` tinyint(1) NOT NULL COMMENT '是否为通用参数',
`searching` tinyint(1) NOT NULL COMMENT '是否用于通用搜索',
`segements` varchar(500) COMMENT '参数值',
INDEX `idx_spg_id`(`spg_id`),
INDEX `idx_spp_id`(`spp_id`)
) COMMENT='参数表';
三:品牌表
CREATE TABLE `t_brand` (
`id` int UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`name` varchar(200) NOT NULL COMMENT '名称',
`image` varchar(500) NULL COMMENT '图片网址',
`letter` char(1) NOT NULL COMMENT '品牌首字母',
UNIQUE `unq_name`(`name`),
INDEX `idx_letter`(`letter`)
) COMMENT = '品牌表';
四:商品分类表
CREATE TABLE `t_category` (
`id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
`name` varchar(200) NOT NULL COMMENT '分类名称',
`parent_id` int UNSIGNED COMMENT '上级分类ID',
`if_parent` tinyint(1) NOT NULL COMMENT '是否含有下级分类',
`sort` int UNSIGNED NOT NULL COMMENT '排名指数(搜索权重)',
INDEX `idx_parent_id`(`parent_id`) USING BTREE,
INDEX `idx_sort`(`sort`) USING BTREE
) COMMENT = '商品分类表';
五: 品牌 和 分类 关联表
CREATE TABLE `t_category_brand` (
`category_id` int UNSIGNED COMMENT '分类ID',
`brand_id` int UNSIGNED COMMENT '品牌ID',
PRIMARY KEY (`category_id`, `brand_id`)
) COMMENT = '分类与品牌关联表';
六:产品表
CREATE TABLE `t_spu` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`title` varchar(200) NOT NULL COMMENT '标题',
`sub_title` varchar(200) NULL COMMENT '副标题',
`category_id` int UNSIGNED NOT NULL COMMENT '分类ID',
`brand_id` int UNSIGNED NULL COMMENT '品牌ID',
`spg_id` int UNSIGNED NOT NULL COMMENT '品类ID',
`saleable` tinyint(1) NOT NULL COMMENT '是否上架',
`valid` tinyint(1) NOT NULL COMMENT '是否有效',
`create_time` timestamp NOT NULL default NOW() COMMENT '创建时间',
`last_update_time` timestamp NOT NULL default NOW() COMMENT '最后修改时间',
PRIMARY KEY (`id`),
INDEX `idx_category_id`(`category_id`),
INDEX `idx_brand_id`(`brand_id`),
INDEX `idx_spg_id`(`spg_id`),
INDEX `idx_saleable`(`saleable`),
INDEX `index_valid`(`valid`)
) COMMENT = '产品表';
mysql对字符串不添加索引,采用分词技术提高索引,中文字符串一般用第三方工具进行分词
mysql保存浮点数用 decimal 类型,不用float 和 double类型,这俩不精确
字段前面有◇,说明为它添加了索引
索引的好处在于可以讲指定列进行排序,提高检索的速度。
比如:id列创建索引后就会生成一个索引表,当查询 where id =10的 时候,使用到索引表。由于10下面是15,不可能有大于10的数。所以不再进行扫描表操作这样就提高了查询的速度,如果没添加索引;则扫描整张主表。
重复值比较多,比如性别男女。建立索引是无意义的。
七:商品表
CREATE TABLE `t_sku` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`spu_id` int UNSIGNED NOT NULL COMMENT '产品ID',
`title` varchar(200) NOT NULL COMMENT '标题',
`images` json NULL COMMENT '图片',
`price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '价格',
`param` json NOT NULL COMMENT '参数',
`saleable` tinyint(1) UNSIGNED NOT NULL COMMENT '是否上架',
`valid` tinyint(1) UNSIGNED NOT NULL COMMENT '是否有效',
`create_time` timestamp NOT NULL DEFAULT NOW() COMMENT '创建时间',
`last_update_time` timestamp NOT NULL DEFAULT NOW() COMMENT '最后修改时间',
PRIMARY KEY (`id`),
INDEX `idx_saleable`(`saleable`),
INDEX `idx_valid`(`valid`),
INDEX `idx_spu_id`(`spu_id`)
) COMMENT = '商品表';