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

news2025/2/27 14:16:33

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

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

数据库表设计
在这里插入图片描述
●属性类别表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、商品属性快照表或模型
更多关于产品分类表的设计
中小型商城系统中的分类/产品属性/扩展属性的数据库设计https://www.cnblogs.com/yjmyzz/archive/2010/06/27/1766012.html
https://doc.wendoc.com/b35c0c89335aaa816dd2866381833203f564769ca.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASEMI代理LT8609AJDDM#WTRPBF原装ADI车规级芯片

编辑:ll ASEMI代理LT8609AJDDM#WTRPBF原装ADI车规级芯片 型号:LT8609AJDDM#WTRPBF 品牌:ADI /亚德诺 封装:DFN-10 批号:2023 安装类型:表面贴装型 引脚数量:10 工作温度:-40C~125C 类型…

MySQL学习---13、存储过程与存储函数

1、存储过程概述 MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将负杂的SQL逻辑封装在一起,应用程序无序关注存储过程和函数内部复杂的SQL逻辑,而只需要简单的调用存储过程和函数就可以。 1.1 理解 含义:存储过程的英文是Sto…

ASEMI代理LTC2954CTS8-2#TRMPBF原装ADI车规级芯片

编辑:ll ASEMI代理LTC2954CTS8-2#TRMPBF原装ADI车规级芯片 型号:LTC2954CTS8-2#TRMPBF 品牌:ADI/亚德诺 封装:TSOT-23-8 批号:2023 引脚数量:23 工作温度:-40C~85C 安装类型&#xff1a…

若依框架(RuoYI)项目打包(jar)方法,部署到 Linux 服务器

序言 在若依框架的 bin 目录下,存在着三个 bat 文件,一个是清除之前的依赖的自动化 bat 脚本(clean.bat),一个是自动化项目打包的 bat 脚本(package.bat),一个是运行若依项目的脚本…

云原生CAx软件:技术约束

Pivotal公司的Matt Stine于2013年首次提出Cloud Native(云原生)的概念,从概念提出到技术落地,云原生还处于不断发展过程中,关于云原生的定义也不断在完善。 云原生为使用开源软件堆栈来创建容器化、动态编排和面向微服务的应用程序。 Heroku创…

YOLOv8 深度解析!一文看懂,快速上手实操(附实践代码)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 开源地址:https://github.com/ultralytics/ultralytics 计算机视觉研究院专栏 作者:Edison_G YOLOv8 是 ultralytics 公司在 …

消息队列测试场景和redis测试场景

一、消息队列测试场景 1、什么是消息队列。你是怎么测试的? 解题思路: 什么是消息队列。 消息队列应用场景。 消息队列测试点列举。 2、什么是消息队列 Broker:消息服务器,提供消息核心服务 Producer:消息生产者&a…

Python入门(八)字典(一)

字典(一) 1.字典概述2.一个简单的字典3.使用字典3.1 访问字典中的值3.2添加键值对3.3 先创建一个空字典3.4 修改字典中的值3.5 删除键值对 作者:xiou 1.字典概述 在本章中,你将学习能够将相关信息关联起来的Python字典&#xff…

二叉排序树查找成功和不成功的平均查找长度

理解二叉树的特性: 1)结点:包含一个数据元素及若干指向子树分支的信息。 2)结点的度:一个结点拥有子树的数据成为结点的度。 3)叶子结点:也称为终端结点,没有子树的结点或者度为零的结点。 4)分支结点:也称为非终端结点,度不为零的结点成为非终端结点。 5)结点…

视觉检测设备主要有哪几分类

在如今的工业4.0时代,整个行业都在加速智能制造的脚步,此时我们就不得不说其其中重要的环节——视觉检测,本身其只是属于机器视觉中一个应用的分支,但是因其应用广泛,久而久之很多工厂行业的从业者在遇到需要外观检测问…

GDB 的简单使用

GDB 的简单使用 一、启动调试二、常用调试命令1.list(显示程序源代码)2.break、tbreak、delete、disable、enable 和 info break(断点操作)3.run(运行源程序)4.next 和 step(单步调试&#xff0…

大型语言模型 (LLM) 的两条发展路线:Finetune v.s. Prompt

前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 在大型语言模型的研究中,研究者对其有两种不同的期待,也可以理解为是两种不同的路线,具…

【LeetCode: 494. 目标和 | 暴力递归=>记忆化搜索=>动态规划 | 背包模型】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【Spring框架三】——Spirng IOC和DI的实现

系列文章目录 【Spring框架一】——Spring框架简介 Spirng IOC和DI的实现 系列文章目录前言一、IDEA新建Spring 项目二、使用XML文件的方式实现IOC和DI1.创建XML文件2. 通过构造函数的方式进行注入运行结果3.setter方法进行注入 三、使用注解的方式实现IOC和DISpring 5中的常用…

Django SQL注入漏洞 CVE-2022-28346

漏洞简介 Django 在2022年发布的安全更新&#xff0c;修复了在 QuerySet 的 annotate()&#xff0c; aggregate()&#xff0c; extra() 等函数中存在的 SQL 注入漏洞。 影响版本 2.2< Django Django <2.2.283.2< Django Django <3.2.134.0< Django Django <4…

Hadoop 4:Hive

数据仓库概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;,是一个用于存储、分析、报告的数据系统。 数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持&#xff08;Decision Support&#x…

新版Mamba体验超快的软件安装

在一文掌握Conda软件安装&#xff1a;虚拟环境、软件通道、加速solving、跨服务器迁移中详细介绍的conda的基本使用和遇到问题的解决方式&#xff0c;也提到了mamba作为一个替代工具&#xff0c;可以很好的加速conda的solving environemnt过程。但有时也会遇到一个很尴尬的问题…

苹果笔要不要买?apple pencil的平替笔推荐

第一款ipad在10年前就已经出现了&#xff0c;它被用作平板电脑&#xff0c;功能非常强大。而现在&#xff0c;ipad的产品型号更新速度&#xff0c;也让ipad变得更加受欢迎。在这些设备中&#xff0c;ipad的辅助配件扮演着重要角色&#xff0c;比如今天我们要讲的这款电容笔&…

【LeetCode】《LeetCode 101》第八章:分治法

文章目录 8.1 算法解释8.2 表达式问题241. 为运算表达式设计优先级&#xff08;中等&#xff09;932. 漂亮数组&#xff08;中等&#xff09;312. 戳气球&#xff08;困难&#xff09; 8.1 算法解释 分治问题 通过「把原问题分为子问题&#xff0c;再将子问题进行合并处理」&a…

伙伴匹配推荐接口的优化策略【优先队列+多线程分批处理,java实现】

文章目录 接口背景接口问题说明优化策略用户匹配度计算接口改进与测试说明改进前改进一&#xff08;使用优先队列存储编辑距离较小的n个元素&#xff09;改进二&#xff08;使用优先队列存储编辑距离较小的n个元素数据分批查询、分批处理&#xff09;改进三&#xff08;使用优先…