商城系统商品属性的数据库设计思路

时间:2024-11-15 10:14:01

京东商城的数据库是如何搭建的,那么多商品,每种商品的参数各不相同,是怎样设计数据库的?
在这里插入图片描述
在提及这种设计思路前,首先得了解数据表可以分为两种结构:
1\横表,也就是我们经常用到的表结构,
在这里插入图片描述

2\纵表,这种结构平时我们用到的表少,通过看非营利开发编程社区codeit,博客上的一篇文章,我才知道有一种叫纵表的设计模式。什么是纵表,它有哪些优点和缺点呢? 纵表的结构如下
在这里插入图片描述
通过以上水平表和垂直表的对比发现: 横表的优点是很直观,它是根据现行业务逻辑定制,设计简单,易操作。缺点:当业务逻辑发生拓展时,大多情况下要更改表的结构。
纵表的好处:比较灵活,当业务系统发生拓展时可以很好的适应,缺点:纵表的数据感觉很乱,而且字段的数据出现很大的冗余。
在这种设计思想对产品设计,需要三个表, -一个为产品表,用来存产品的公共属性,另外一个是产品分类表,最后一个表很关键,用来存不同类别产品的不同属性,采用的是纵表的结构,如图:
在这里插入图片描述

数据库表设计
在这里插入图片描述
●属性类别表speC
spec_ id-属 性类别id
spec_ name -属 性类别名称
●属性值表spec_ info
spec_ info_ id 一属 性值id
spec
id-属性类别
spec_ info_ name一属 性值名称
■商品表goods
goods_ id 一商品id
goods_ name一商品名称 .
■商品属性表goods_ spec
goods_ spec_ jid 一商品属性id
goods_ jid 一商品id
spec_ info id 一商品属性值id
建立以上4个数据库后,spec表存放的是品牌,颜色,尺码等的属性名,spec_ jinfo表存放的是红色。蓝色,HP. IBM等的实际的属性值,再
通过goods_ spec表将一个商品跟它的属性进行关联,这样要实现类似淘宝的检索功能的SQL语句就可以编写如下:
假设要检索品牌为IBM或HP (在spec_ info表中的spec_ jinfo_ id 分别为1和2),颜色为红色(在spec_ info表中的spec_ jinfo_ jid 为6),尺码为15寸(在spec_ info表中的spec info_ id 为5)的商品

Ssql= "select " from goods_ spec where spec_ info_ id = 5 and goods_ id in (select goods_ id from goods_ spec where spec_ into_ id=6 and goods_ id in (solect goods. id from goods_spec where spec_info_jid= 1 or spec_jinfo_id= 2);

思路一,使用独立的商品类表, 构造商品属性信息,1、N个商品类属性值表,2、商品基本信息表,3、商品属性表
思路二,使用key-value模型,使用动态行列转换模型,将商品属性信息碎片化存储,整合型只读输出快照,1、公共键值表,2、公共类表,3、公共键类表,4、属性值物化表,5、商品基本信息表,6、商品属性表,6、商品属性快照表或模型
更多关于产品分类表的设计
中小型商城系统中的分类/产品属性/扩展属性的数据库设计/yjmyzz/archive/2010/06/27/
/