【精品】电商项目 中 基于SPU与SKU的 商品 数据库表设计

时间:2024-11-15 10:29:25

商品规格表(即:sku表):tb_product_specs

存储商品的具体规格单品,即sku。sku表保存的是具体的单品信息,比如具体规格的库存和价格等,核心字段是product_id和product_specs:

  • product_id 记录的是spu表中的商品id

  • product_specs 记录的是该单品具体的属性值(规格值);

属性:id,product_id,product_specs等

属性key表:tb_attribute_key

用于存储sku的属性,比如:机身颜色,存储容量

属性key表和属性value表仅用于管理后台页面生成属性选项,管理员在发布新商品时勾选属性,方便规格的录入和保证正确性;

属性value表:tb_attribute_value

用于存储sku的属性值,比如:6+128G,8+128G,8+256G

总结

上述数据表设计方案适用于商品类别差异不是很大的情形,通过表的字段可以发现不同的商品之间变化的信息只有 attribute_list 字段, 而这个字段通过json来存储各种不同的属性集合, 同样sku表中变化的字段只有 product_specs 也是通过json来存储各种不同属性组合。

改进方案


将tb_product、tb_brand、tb_product_specs表中的info字段分别抽取到单独的表中。

附:相关表的SQL文件


/*

Navicat Premium Data Transfer

Source Server : localhost

Source Server Type : MySQL

Source Server Version : 80025

Source Host : localhost:3306

Source Schema : test

Target Server Type : MySQL

Target Server Version : 80025

File Encoding : 65001

Date: 07/12/2021 11:19:44

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


– Table structure for tb_attribute_key


DROP TABLE IF EXISTS tb_attribute_key;

CREATE TABLE tb_attribute_key (

id int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘编号’,

attribute_name varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘属性名’,

priority int(0) UNSIGNED NULL DEFAULT NULL COMMENT ‘优先级’,

category_id int(0) UNSIGNED NULL DEFAULT NULL COMMENT ‘类别编号’,

create_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT ‘创建时间’,

update_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT ‘更新时间’,

PRIMARY KEY (id) USING BTREE,

INDEX category_id(category_id) USING BTREE,

CONSTRAINT tb_attribute_key_ibfk_1 FOREIGN KEY (category_id) REFERENCES tb_product_category (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = ‘属性key表’ ROW_FORMAT = Dynamic;


– Records of tb_attribute_key



– Table structure for tb_attribute_value


DROP TABLE IF EXISTS tb_attribute_value;

CREATE TABLE tb_attribute_value (

id int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘编号’,

attribute_id int(0) UNSIGNED NULL DEFAULT NULL COMMENT ‘属性编号’,

priority int(0) UNSIGNED NULL DEFAULT NULL COMMENT ‘优先级’,

attribute_value varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘属性值’,

create_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT ‘创建时间’,

update_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT ‘更新时间’,

PRIMARY KEY (id) USING BTREE,

INDEX category_id(attribute_id) USING BTREE,

CONSTRAINT tb_attribute_value_ibfk_1 FOREIGN KEY (attribute_id) REFERENCES tb_attribute_key (id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = ‘属性value表’ ROW_FORMAT = Dynamic;


– Records of tb_attribute_value



– Table structure for tb_brand


DROP TABLE IF EXISTS tb_brand;

CREATE TABLE tb_brand (

id int(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘品牌编号’,

name varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘品牌名称’,

logo varchar(180) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘品牌LOGO’,

info varchar(220) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘品牌描述’,

status tinyint(0) UNSIGNED NULL DEFAULT 1 COMMENT ‘状态 1上架 2下架’,

create_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT ‘创建时间’,

update_time datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT ‘更新时间’,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = ‘品牌表’ ROW_FORMAT = Dynamic;


– Records of tb_brand



– Table structure for tb_product

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了

img-uWBewPm0-1711810520871)]

最后

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了

[外链图片转存中…(img-OMCLob6v-1711810520871)]

[外链图片转存中…(img-3xyf3fbc-1711810520872)]

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】