(四)品类表和产品表设计

 

一: 品类表

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 = '商品表';

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值