首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(二)购物商城数据库设计-商品表设计

大家好,今天我们来设计一下购物商城的商品表。...我们的目标是表结构能够满足下面这张图的搜索: 在设计表之前,我们先来了解下商品中的两个概念:SPU和SKU SPU SPU(Standard Product Unit):标准化产品单元。...因此,我们要新建一张分类表,里面存放各种分类名称,然后在SPU表里面添加一个分类id,如图: 现在,我们已经把SPU相关的表设计好了,现在来设计SKU相关的表。...至于增值保障,肯定需要一张表来存放增值保障信息,然后它跟SKU的关系是多对多的关系,需要一张中间表来关联 至此,商品表的核心内容已经设计得差不多了,当然还有其它内容。篇幅有限我们就不一一展开讨论了。...下一篇文章我们根据本篇的设计来做具体的建表,并来一次实际演练。

3.8K30

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

电商商品模块数据库表设计先抛开营销和具体业务不谈商品必然会有库存,类别,品牌,基础信息(其他字段,如名字,描述),属性(规格/参数),评论等。...属性设计对于一件商品的属性,它应该分为规格和参数规格:消费者选择购买的款式,如衣服尺寸x还是xl,苹果手机内存128g还是256g参数:该商品本身固定属性,如某一衣服材质是聚酯纤维,苹果14的处理器是A14...所以库存和商品+规格的组合是对应的。在sku_stock商品库存表中,加一个sp_data商品销售属性来表示。根据电商作风,一个商品规格下的库存都有对应的sku编码这个编码指导着物流和后端仓库管理。...ROW_FORMAT = DYNAMIC;类似商品分类,和论坛系统差不多品牌设计和评论差不多,但是N对1(即一个商品就一个品牌,而一个品牌多商品DROP TABLE IF EXISTS `pms_brand...ROW_FORMAT = DYNAMIC;总结不加任何业务,电商中商品的设计应该有这些属性设计如何区分规格和参数:加个字段分类加parent_id分层设计库存sku_code编码某一规格下的商品的库存

55112
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库设计之商品表分析1

    SKU才是具体要销售的商品,每一个SKU的价格、库存可能会不一样,用户购买的是SKU而不是SPU,让用户选择实体 SPU就是帮助管理SKU,使得方便用数据库的概念去表示世界万物。...1.2 思考并发现问题 弄清楚了SPU和SKU的概念区分,接下来我们一起思考一下该如何设计数据库表。 首先来看SPU,大家一起思考下SPU应该有哪些字段来描述?...碰到难题了,不同的商品分类,可能属性是不一样的,比如手机有内存,衣服有尺码,我们是全品类的电商网站,这些不同的商品的不同属性,如何设计到一张表中?...1.4 其他 在设计商品属性的时候,同时还要考虑到功能,比如,商品将会被搜索,排序,筛选,而有些字段是可以筛选的,有些则不可以 ?...如果按照传统数据库设计,这里至少需要3张表: group:代表组,与商品分类关联 param_key:属性名,与组关联,一对多 param_value:属性备选值,与属性名关联,一对多 这样程序的复杂度大大增加

    4.7K62

    新零售mysql设计(采购表 入库信息表 入库商品表)

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql(采购表) 解释 你说要采购东西是吧。提供要采购的商品。数量 运去那号仓库。...日期时间 数据 sql(入库信息表) 解释: 解析: 数据 sql(入库商品表) PRIMARY KEY(productin_id,purchase_id) ---- sql(采购表) CREATE table...提供要采购的商品。数量 运去那号仓库。采购价格是多少钱。卖给消费者是多少钱。采购员id就是谁去采购。采购完成了吗?日期时间 采购的是商品表t_sku中的id==1的商品....支付方式1 数据 sql(入库商品表) CREATE TABLE t_productin_purchase( productin_id int unsigned not null COMMENT "...purchase_id int unsigned not null COMMENT "采购id", PRIMARY KEY(productin_id,purchase_id) ) COMMENT="入库商品表

    1.3K30

    新零售系统mysql设计(产品spu 商品sku)表

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql sku商品表 spu产品表 产品表数据: 产品表spu与商品表的关系: mysql表设计需要注意的地方...; 产品表数据: 产品表spu与商品表的关系: 一个产品有多个商品。...mysql表设计需要注意的地方: 价格:需要用到decimal这个类型。 我写的decimal(10,2)是什么意思呢?...image在数据库中是以二进制存储的,所以varchar肯定不行.因为json主要用来存储东西的。能够存储很大空间. param json not null COMMENT “参数”,为什么要用这个。...2,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 索引的坏处 创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。

    1.5K70

    MySQL数据库表设计规范

    一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新...d)Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。 e)当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。...h)由于MYSQL表DDL维护成本很高,所以在适当的时候,可以有一定的字段容余。 比如:Value1,Value2,Value3 这样的字段。...e) 外键约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。 f) 当万不得已必须使用外健的话,必须在外健列创建 INDEX。

    2.8K30

    Mysql实例 数据库优化--数据库表设计

    一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善。...二.数据库表设计 项目立项后,开发部门根据产品部门需求开发项目。开发工程师在开发项目初期会对表结构设计。对于数据库来说,表结构设计很重要,如果设计不当,会直接影响到用户访问网站速度,用户体验不好!...6.保证每张表都有一个主键ID 每设计新建一张表的时候,都应该为其设计一个ID字段,并让其成为主键,而且最好是INT型(也有使用UUID的),同时设置这个ID字段为自增(AUTO_INCREMENT)的标志...16.避免多表查询字段类型不一致 在遇到需要多表联合查询的时候,设计表结构的时候,尽量保持表与表的关联字段一致,并且都要设置索引。同时,多表连接查询时,尽量把结果集小的表作为驱动表。...17.建议开启查询缓存 大多数的MySQL服务器都开启了查询缓存,这是提高性能最有效的方法之一,因为查询缓存由MySQL数据库引擎自动处理,当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中

    2.4K10

    新零售系统mysql设计(供应商表 供应商关联商品表)

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql(供应商表) 解析(供应商表) 字段: 类型: 索引 数据 sql(商品表) 解析(商品表)...数据 sql(供货商关联商品表) 解析: PRIMARY key(supplier_id,sku_id) 数据 ---- sql(供应商表) 解析(供应商表) 字段: 举个例子。...; 数据 sql(商品表) 解析(商品表) 举个例子: sku商品表 是不是得有id自增代表不用手动创建是吧 spu_id是不是的有。..."; 解析: 意思供货商id=1能提供商品是商品表中id=1 2 3 的商品.意思是供货商能提供什么样的商品....PRIMARY key(supplier_id,sku_id) 代表一种商品不会在同一个供应商中出现两次.你要知道,这是供货商关联商品表,代表供应商能提供的商品。怎么能够一种商品说两次呢?对吧。

    63620

    数据库篇:mysql表设计原则-三范式

    前言 关系型数据库的表在设计时,我们常常需要考虑哪些业务字段应该放哪张表,字段是否应该拆分,表与表之间该怎么关联。那有没有相应的规范或者原则来指导我们去设计表呢?...数据库设计三范式;三范式主要是解决表之间的关联关系,和字段冗余问题 关注公众号,一起交流,微信搜一搜: 潜行前行 第一范式 列都是不可再分,第一范式的目标是确保每列的原子性,每列都是不可再分的最小数据单元...符合第一范式的设计 ? 第二范式 首先满足第一范式,并且表中非主键列不存在对主键不依赖或者部分依赖,确保每个列都和主键相关。...第三范式 满足第二范式,并且表中的列不存在对非主键列的传递依赖,每列都和主键列直接相关,而不是间接相关 在成绩表里,爱好是依赖学生的,学生又是依赖主键ID,存在传递依赖应该提取出学生的个人信息为表。...欢迎指正文中错误 参考文章 mysql 数据库的设计三范式[1] Reference [1] mysql 数据库的设计三范式: https://www.cnblogs.com/xiaozengzeng/

    1.1K10

    MySQL大表设计

    存储大规模数据集需要仔细设计数据库模式和索引,以便能够高效地支持各种查询操作。...在面对数亿条数据,每条数据包含数百个字段的情况下,以下是我能想到的在设计数据库的时候需要注意的内容,不足之处欢迎批评指正:1....数据库设计表结构设计垂直分割:将大的表分割成多个相关性较小的表,以减少单个表的字段数量。这有助于提高查询效率和降低冗余。规范化:合理使用规范化,将重复数据抽取成独立的表,以减小数据冗余。...分库分表如果数据量仍然巨大,可以考虑分库分表策略,将数据划分到不同的数据库或表中。4. 数据分区根据时间、范围等条件对数据进行分区,以提高查询效率。5....-- 例子:设置缓冲池大小SET GLOBAL innodb_buffer_pool_size = 2G;设计大规模数据集的数据库是一个综合性的任务,需要考虑到数据结构、索引、查询需求以及数据库引擎的特性

    18510

    Mysql实例 表设计

    二.设计表格 公司表 公司名称 公司编号(自增主键) 电话号码 A 1001 xx B 1002 xx 广告表 广告编号 有该广告的公司的编号(自增主键) 广告收费/点击一次 1 1001 2 2 1001...3 3 1002 2 点击表 广告编号 该广告发送给浏览者的日期 1 101101 2 101102 1 101323 3 111232 三.查询 查都有哪些公司 直接查询公司表的 公司名称 字段...select 公司名称 from 公司表; 结果为A,B公司投放了广告 查A公司都放了哪些广告 先到公司表,将公司名称=A的编号提取出来,然后将公司编号作为条件去广告表里找广告编号。...between 100000 and 199999; 最后做个计算即可 四.分析 表结构设置 目前有3张表,基本满足业务需求,但未来查询更多,需要重新设计主键位置,表结构。...当数据庞大,首当其冲的是点击表,可能一天有几万次记录写入,这张表将变得庞大,可以考虑将表根据月份进行拆分。

    1.3K20

    mysql之MVCC 配置优化 数据库表设计(四)

    内存参数配置 数据库表设计 三大范式 MVCC(多版本并发控制) Multiversion concurrency control (版本并发控制):并发访问(读或写)数据库时,对正在事务内处理的数据做多版本的管理...innodb_lock_wait_timeout InnoDB事务在被回滚之前可以等待一个锁定的超时秒数 https://www.cnblogs.com/wyy123/p/6092976.html 常见配置的帖子 数据库表设计...所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的, 不可再分; 第二范式( 2NF): 要求实体的属性完全依赖于主键。...简而言之, 第三范式( 3NF)要求一个数据库表中不包含已在其它表中已包含的非主键信息。...简单一点 : 1 , 每一列只有一个单一的值 ,不可再拆分 2 , 每一行都 有主键能进行区分 3 , 每一个表都不包含其他表已经包含的非主键 充分的满足第一范式设计将为表建立太量的列 数据从磁盘到缓冲区

    1.1K20

    mysql 数据库表结构设计与规范

    大家好,又见面了,我是你们的朋友全栈君 mysql 数据库表结构设计与规范 DDL(data difinition language)就是数据定义语言。...,而这个名字就是不存在的 mysql数据库使用的一些规范 通常来讲,各个互联网公司的数据库分为5个数据库环境: dev : 开发环境, 开发可读写,可修改表结构; 常用的163的数据库表; 开发人员可以修改表结构...5.5.3以后支持) 存储引擎使用InnoDB 变长字符串尽量使用VARCHAR VARBINARY 不在数据库中存储图片、文件 设计表的时候需要添加注释 单表数据量控制在...、字段名禁止使用保留字 库名、表名、字段名、索引名使用小写字母,以下划线分割 ,需要见名知意 库名、表名、字段名、索引名不要设计过长,禁止超过32个字符,尽可能用最少的字符表达出表的用途...充分利用前缀索引 尽量不使用存储过程、触发器、函数等,让数据库做最擅长的事 避免使用大表的JOIN,MySQL优化器对join优化策略过于简单 避免在数据库中进行数学运算和其他大量计算任务

    2.4K40

    新零售mysql设计(仓库 新零售 零售商品库存 仓库商品库存)表 解析

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql 仓库表 数据 仓库商品库存表 数据 新零售表 数据 零售店商品库存表 数据 仓库表(解析)...2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利; 3)数字型,占用索引空间小,范围查找与排序友好,在程序中传递也方便; 为什么要设置主键,主键作用是什么?...别人看懂这是什么字段或者表或者数据库 为什么要用int unsigned类型呢? 因为id是不是整数的。..."库存单位", PRIMARY key (warehouse_id,sku_id) ) COMMENT="仓库商品库存表"; 你说这个表( 仓库商品库存表)是一张关联表对吧。...varchar(20) not null COMMENT "库存单位", PRIMARY key (shop_id,sku_id) ) COMMENT="零售店商品库存表"; 你说这张表(零售店商品库存表

    1.2K100

    mysql表设计规范

    大表拆成小表,让他们的主键相同即可。...尽可能使用 not null定义字段将字段设置成空字符串或者常量值not null防止出现空指针的问题null值存储也需要额外的空间,导致比较运算更为复杂,是优化器难以优化sqlnull值可能会导致索引失效设计索引有查询条件的字段...,一般要加索引单表的索引不超过5个区分度不高的字段,不添加索引(性别)避免索引失效的情况(mysql的内置函数)索引过多,选用联合索引优化不使用外键关联使用外键存在性能问题、并发死锁问题、使用起来不方便等...每次delete、update都必须考虑外键约束分库分表不能使用不建议使用存储过程、触发器存储过程:已预编译为一个可执行过程的一个或多个sql语句触发器:一段代码,当触发某个事件时,自动执行这些代码可以用数据库中相关联的表实现级联修改实现监控某张表中的某个字段的改变而需要做出相应的处理生成某些业务的编号滥用造成数据库和应用程序的维护困难...mysql对于存储过程、触发器等还不是很成熟,没有完善的出错记录处理,不建议使用sql编写的优化经验查询尽量不要使用select *查询的结果只要一条或者只要最大/小的一条记录,建议使用limit 1避免

    25230

    MySQL表的物理设计

    在设计好表结构之后, 就需要进行物理设计, 将实体及属性映射到具体表和列. 而合理选择存储引擎和列类型也是数据库设计十分重要的一个环节....物理设计包括, 命名规范, 存储引擎, 列字段选择, 主键设计以及主键生成算法. 一. 命名规范 首先在定义数据库,表,字段时一定要公司的命名规范; 二....在加载同样数据时, 需要加载的数据页也就越少, 也就能减少磁盘IO, 提高数据库性能. 3.1 整数类型 根据业务情况, 选择合适类型 类型 大小 有符号范围 无符号范围(unsigned) tinyint...如存储金钱相关数据, 那最好是decimal类型 列类型 存储空间 是否精确类型 float 4字节 否 double 8字节 否 decimal 每4字节存9个数字,小数点占1个字节 是 3.3 字符串类型 MySQL...主键选择 应选择尽可能小且顺序增长的数字类型, 并且表主键可以与业务主键不同.

    1.3K10
    领券