不要在数据库中保存文件,
直接把文件保存在硬盘上,或 OSS上,数据库只保存文件的路径

品牌表

首字母便于用户搜索
image.png

image.png

  1. CREATE TABLE `t_brand`
  2. (
  3. `id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  4. `name` VARCHAR(200) NOT NULL COMMENT '名称',
  5. `image` VARCHAR(500) COMMENT '图片地址',
  6. `letter` CHAR(1) NOT NULL COMMENT '品牌首字母',
  7. INDEX idx_letter (`letter`),
  8. UNIQUE unq_name (`name`)
  9. ) COMMENT = '品牌表';

分类表

每个子类,都记录下父级的 ID,链表结构
例如评论,这个评论归属在哪个 话题下

  • 一级分类,没有 id
  • 经常被检索的的字段就添加索引

排名指数,权重
image.png
商品分类 ER图

  1. CREATE TABLE `t_category`
  2. (
  3. `id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  4. `name` VARCHAR(200) NOT NULL COMMENT '分类名称',
  5. `parent_id` INT UNSIGNED COMMENT '上级分类ID,顶级分类是空值',
  6. `is_parent` BOOLEAN NOT NULL COMMENT '是否有下级分类',
  7. `sort` INT UNSIGNED NOT NULL COMMENT '排名指数',
  8. INDEX idx_parent_id (`parent_id`),
  9. INDEX idx_sort (`sort`) # 经常被检索的的字段就添加索引
  10. ) COMMENT = '商品分类表';

image.png

品牌和分类的关系

一个分类也可以有多个品牌
一个品牌可以有多个分类
品牌和分裂是 多对多的关系,多对多的关系要创建,关联表

image.png

  1. CREATE TABLE `t_category_brand`
  2. (
  3. `category_id` INT UNSIGNED COMMENT '分类ID',
  4. `brand_id` INT UNSIGNED COMMENT '品牌ID',
  5. PRIMARY KEY (`category_id`, `brand_id`) # 2个字段组成的复合主键
  6. ) COMMENT = '分类与品牌关联表';