前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >电商商品模块数据库表设计

电商商品模块数据库表设计

原创
作者头像
小薛cOde
发布于 2024-05-14 07:27:23
发布于 2024-05-14 07:27:23
6550
举报

电商商品模块数据库表设计

先抛开营销和具体业务不谈

商品必然会有库存,类别,品牌,基础信息(其他字段,如名字,描述),属性(规格/参数),评论等。

属性设计

对于一件商品的属性,它应该分为规格和参数

规格:消费者选择购买的款式,如衣服尺寸x还是xl,苹果手机内存128g还是256g

参数:该商品本身固定属性,如某一衣服材质是聚酯纤维,苹果14的处理器是A14。

按照上面这件衣服,他的属性有上市年份,品牌,主材含量,使用对象等等参数信息,也有购买时可选择的规格,如颜色,尺寸等。

而在product_attribute表中可以一个type字段来分辨这是参数还是规格。

你可以发现,对于一些属性,我们可以将其归类,比如处理器,内存,操作系统等参数会在通信设备中出现,而尺寸,材质会在所有衣服出现。所以属性也有分类

加一个商品属性分类product_attribute_category表

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_product_attribute`;
CREATE TABLE `pms_product_attribute`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `product_attribute_category_id` bigint(20) NULL DEFAULT NULL,
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `select_type` int(1) NULL DEFAULT NULL COMMENT '属性选择类型:0->唯一;1->单选;2->多选',
  `input_type` int(1) NULL DEFAULT NULL COMMENT '属性录入方式:0->手工录入;1->从列表中选取',
  `input_list` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '可选值列表,以逗号隔开',
  `sort` int(11) NULL DEFAULT NULL COMMENT '排序字段:最高的可以单独上传图片',
  `filter_type` int(1) NULL DEFAULT NULL COMMENT '分类筛选样式:1->普通;1->颜色',
  `search_type` int(1) NULL DEFAULT NULL COMMENT '检索类型;0->不需要进行检索;1->关键字检索;2->范围检索',
  `related_status` int(1) NULL DEFAULT NULL COMMENT '相同属性产品是否关联;0->不关联;1->关联',
  `hand_add_status` int(1) NULL DEFAULT NULL COMMENT '是否支持手动新增;0->不支持;1->支持',
  `type` int(1) NULL DEFAULT NULL COMMENT '属性的类型;0->规格;1->参数',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 74 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品属性参数表' ROW_FORMAT = DYNAMIC;
代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_product_attribute_category`;
CREATE TABLE `pms_product_attribute_category`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `attribute_count` int(11) NULL DEFAULT 0 COMMENT '属性数量',
  `param_count` int(11) NULL DEFAULT 0 COMMENT '参数数量',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '产品属性分类表' ROW_FORMAT = DYNAMIC;

对于一件商品,它肯定有很多属性,所以商品属性关联表

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_product_attribute_value`;
CREATE TABLE `pms_product_attribute_value`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `product_id` bigint(20) NULL DEFAULT NULL,
  `product_attribute_id` bigint(20) NULL DEFAULT NULL,
  `value` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手动添加规格或参数的值,参数单值,规格有多个时以逗号隔开',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 517 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '存储产品参数信息的表' ROW_FORMAT = DYNAMIC;

比如这里的关联意思就是对于product7,有属性attribute1,值有X,XL,XXL(应该就是衣服尺寸)

分类设计

对于一件商品,如苹果手机,往小了说是苹果手机,往大了说是智能手机,再往大说是通信设备(电子设备)。

所以商品的类别有大有小,是一个分支结构。

我们可以用parent_id字段去记录当前类别的父类,对于商品类别,它应该有name,level(x级分类)等等,所以

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_product_category`;
CREATE TABLE `pms_product_category`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '上机分类的编号:0表示一级分类',
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `level` int(1) NULL DEFAULT NULL COMMENT '分类级别:0->1级;1->2级',
  `product_count` int(11) NULL DEFAULT NULL,
  `product_unit` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `nav_status` int(1) NULL DEFAULT NULL COMMENT '是否显示在导航栏:0->不显示;1->显示',
  `show_status` int(1) NULL DEFAULT NULL COMMENT '显示状态:0->不显示;1->显示',
  `sort` int(11) NULL DEFAULT NULL,
  `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标',
  `keywords` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '描述',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 56 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '产品分类' ROW_FORMAT = DYNAMIC;

库存设计

一件商品,在出货载入系统后,会有不同规格的对应库存

比如苹果14这件商品,远峰蓝128g有1000库存,远峰蓝256g有300库存。

所以库存和商品+规格的组合是对应的。

在sku_stock商品库存表中,加一个sp_data商品销售属性来表示。

根据电商作风,一个商品规格下的库存都有对应的sku编码

这个编码指导着物流和后端仓库管理。为了与id区分,加一个sku_code编码

所以库存表:

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_sku_stock`;
CREATE TABLE `pms_sku_stock`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `product_id` bigint(20) NULL DEFAULT NULL,
  `sku_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'sku编码',
  `price` decimal(10, 2) NULL DEFAULT NULL,
  `stock` int(11) NULL DEFAULT 0 COMMENT '库存',
  `low_stock` int(11) NULL DEFAULT NULL COMMENT '预警库存',
  `pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '展示图片',
  `sale` int(11) NULL DEFAULT NULL COMMENT '销量',
  `promotion_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '单品促销价格',
  `lock_stock` int(11) NULL DEFAULT 0 COMMENT '锁定库存',
  `sp_data` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品销售属性,json格式',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 243 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'sku的库存' ROW_FORMAT = DYNAMIC;

评论设计

每件商品都会有评论,是1对N的关系

评论comment表需要记录评论者网名nick_name,商品id购买该商品时的规格product_attribute,评论内容content,展示状态status,评论的IP地址

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_comment`;
CREATE TABLE `pms_comment`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `product_id` bigint(20) NULL DEFAULT NULL,
  `member_nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `star` int(3) NULL DEFAULT NULL COMMENT '评价星数:0->5',
  `member_ip` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评价的ip',
  `create_time` datetime NULL DEFAULT NULL,
  `show_status` int(1) NULL DEFAULT NULL,
  `product_attribute` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '购买时的商品属性',
  `collect_couont` int(11) NULL DEFAULT NULL,
  `read_count` int(11) NULL DEFAULT NULL,
  `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  `pics` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '上传图片地址,以逗号隔开',
  `member_icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论用户头像',
  `replay_count` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品评价表' ROW_FORMAT = DYNAMIC;

评论也有回复评论,所以

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_comment_replay`;
CREATE TABLE `pms_comment_replay`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `comment_id` bigint(20) NULL DEFAULT NULL,
  `member_nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `member_icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `content` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime NULL DEFAULT NULL,
  `type` int(1) NULL DEFAULT NULL COMMENT '评论人员类型;0->会员;1->管理员',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '产品评价回复表' ROW_FORMAT = DYNAMIC;

类似商品分类,和论坛系统差不多

品牌设计

和评论差不多,但是N对1(即一个商品就一个品牌,而一个品牌多商品

代码语言:sql
AI代码解释
复制
DROP TABLE IF EXISTS `pms_brand`;
CREATE TABLE `pms_brand`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `first_letter` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首字母',
  `sort` int(11) NULL DEFAULT NULL,
  `factory_status` int(1) NULL DEFAULT NULL COMMENT '是否为品牌制造商:0->不是;1->是',
  `show_status` int(1) NULL DEFAULT NULL,
  `product_count` int(11) NULL DEFAULT NULL COMMENT '产品数量',
  `product_comment_count` int(11) NULL DEFAULT NULL COMMENT '产品评论数量',
  `logo` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '品牌logo',
  `big_pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专区大图',
  `brand_story` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '品牌故事',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 60 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '品牌表' ROW_FORMAT = DYNAMIC;

总结

不加任何业务,电商中商品的设计应该有这些

  • 属性设计
    • 如何区分规格和参数:加个字段
  • 分类
    • 加parent_id分层设计
  • 库存
    • sku_code编码
    • 某一规格下的商品的库存 sp_data来区分
  • 评论
    • 商品对评论,1对N
    • 回复评论
  • 品牌
    • 商品对品牌,N对1

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
python转置矩阵画流程图_python 矩阵转置transpose
我们对arr进行transpose转置,arr2 = arr.transpose((1,0,2)),结果是这样:
全栈程序员站长
2022/08/24
1.8K0
numpy常见运算
指数运算np.exp() np.exp(x)会创建一个新的对象, np.exp(x,x)会将结果赋给x不会创建新的对象 exp = np.array([3.0, 5.0]) # 会将指数运算e^3.0, e^5.0 的结果赋给exp, exp = np.array([3.0, 5.0]) print 'exp', id(exp) exp1 = np.exp(exp) print 'exp1', id(exp1),exp1 np.exp(exp, exp) print 'exp', id(exp),
用户1733462
2018/06/01
5120
python中的numpy模块
对于python中的numpy模块,一般用其提供的ndarray对象。  创建一个ndarray对象很简单,只要将一个list作为参数即可。  例如:
狼啸风云
2019/01/18
5.2K0
python一维数组转置_python矩阵转置[通俗易懂]
对于有参数的transpose:对于三维数组,原型数组的参数应该是(0,1,2),对应的是外行,子行,子列,如果变成(1,0,2)就是将外行变成子行,子行变成外行。对于元素索引也发生同样改变,比如原来的元素3的索引是(0,1,1),转换后就是(1,0,1)
全栈程序员站长
2022/08/22
2.3K0
软件测试|Python科学计算神器numpy教程(八)
NumPy是Python中用于数值计算和数据处理的强大库。本文将介绍如何使用NumPy进行数组操作,包括变维、转置、修改数组维度、连接和分割数组等常用操作。
霍格沃兹测试开发Muller老师
2023/08/20
2690
Python基础之数组和向量化计算总结
例如:import numpy as np data1=[6,7.5,8,0,1]     #创建简单的列表 print(data1) arr1=np.array(data1)    #将列表创建数组 print(arr1)
py3study
2020/01/16
8750
【Python】Numpy使用指南
Numpy是用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,本身是由C语言开发。这个是很基础的扩展,其余的扩展都是以此为基础。
keloli
2018/09/13
9680
Python定义计算矩阵转置的函数
定义计算矩阵转置的函数 1)使用循环进行转置 matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]
kirin
2021/03/15
1.6K0
tf/np.transpose()
第一步:搞清原矩阵的shape,比如下面(2,2,4) 第二步:原矩阵顺序为(0,1,2),判定是几步转置。比如,(1,0,2),一步转置。如果是(1,2,0),就是两步转置,分成两个一步就可以了。 第三步:把转置后的位置画好。如上,还是,shape还是(2,2,4),但是,一、二维已经换了。你就把现在的相应数据的坐标,一、二维位置互换一下,互换之后找到转置前的矩阵对应坐标,就是那个数了。
狼啸风云
2021/04/23
3880
python中矩阵转置4种方法「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137233.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
3.7K0
Numpy的轴及numpy数组转置换轴
在现代数据科学和机器学习领域,NumPy成为了Python中最为强大和广泛使用的科学计算库之一。它提供了高性能的多维数组对象,以及用于处理这些数组的各种数学函数。本文将探讨NumPy中一个关键而强大的概念——轴(axis)以及如何利用数组的转置来灵活操作这些轴。
老虎也淘气
2024/01/30
5000
Numpy的轴及numpy数组转置换轴
python转置矩阵代码_python 矩阵转置[通俗易懂]
5.矩阵转置 给定:L=[[1,2,3],[4,5,6]] 用zip函数和列表推导式实现行列转def transpose(L): T = [list(tpl) for tpl in zip(*L)] return T
全栈程序员站长
2022/08/22
6K0
我的机器学习numpy篇何为ndarray?ndarry创建生成正态分布ndarry属性修改形状ndarry运算ndarry切片矩阵转置聚合函数
前言: numpy是以矩阵为基础的数学计算模块,其基础为多维数组为ndarray 官方文档:(https://docs.scipy.org/doc/numpy/user/index.html) 何为ndarray? 一种由相同类型的元素组成的固定的多维数组。(注意黑体字) ndarry创建 代码如下 import numpy as np np.array([[1,2,3],[4,5,6]]) np.zeros((4,5)) np.ones((2,3,4)) np.random.randin
DC童生
2018/04/27
1.1K0
我的机器学习numpy篇何为ndarray?ndarry创建生成正态分布ndarry属性修改形状ndarry运算ndarry切片矩阵转置聚合函数
Python矩阵转置方法大全
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136989.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
9090
Python矩阵转置方法大全
Numpy基础知识点汇总
1、概述 Numpy是高性能科学计算和数据分析的基础包,它的部分功能如下: 1)ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 2)对整组数据进行快速运算的标准数学函数 3)用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 2、ndarray的创建 这一节,我们主要关注ndarray数组的创建,我们主要有以下几种方式: 数组转换 创建数组的最简单的方法就是使用array函数,将Python下的list转换为ndarray。 #通过数组创建一个ndarray data1
石晓文
2018/04/11
1.6K0
Python Numpy基础教程
本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x
oYabea
2020/09/07
8570
numpy中矩阵转成向量使用_a与b的内积等于a的转置乘b
有点抱歉的是我的数学功底确实是不好,经过了高中的紧张到了大学之后松散了下来。原本高中就有点拖后腿的数学到了大学之后更是一落千丈。线性代数直接没有学明白,同样没有学明白的还有概率及统计以及复变函数。时至今日,我依然觉得这是人生中让人羞愧的一件事儿。不过,好在我还有机会,为了不敷衍而去学习一下。
全栈程序员站长
2022/11/08
1.8K0
AI基础:Numpy简易入门
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或 Matlab 等所做的任务。
Ai学习的老章
2019/12/05
7240
Python矩阵计算
1、构建矩阵 *1)、集合形式建立矩阵 asmatrix()函数。 (1)数组形式建立矩阵 函数matrix(data,dtype=None, copy=True),data为数值类型的集 合对象,dtype指定输出矩阵的类型,copy=True进行深度拷贝建 立全新的矩阵对象,copy=False仅建立基于集合对象的视图(深 度拷贝、视图的原理见5.2节内容)。功能类似于mat()函数、
全栈程序员站长
2022/09/13
1.9K0
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
NumPy的功能不仅限于数值计算,它还支持复杂的数组操作,如切片、索引、线性代数运算等。NumPy通常与SciPy、Pandas等其他科学计算库一起使用,构成了Python科学计算的基础生态。
半截诗
2024/10/09
1.1K0
推荐阅读
相关推荐
python转置矩阵画流程图_python 矩阵转置transpose
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档