2024-11-30 10:08:29
这个问题的核心点在于:不同商品类别差异很大,如何设计通用的存储方案?简单来说,用数据库去存储所有信息,不管横表还是纵表,都有明显的缺陷:横表:同一个字段对不同商品含义不一样,这到了后面开发和维护是很蛋疼的纵表:一个商品的属性分布到很多行记录中,业务处理很麻烦,而且纵表的记录数会非常多,性能会有问题所以不要尝试只用数据库去统一解决这个问题,思路扩散一些其实就简单了:公共表:提炼商品公共的信息放到数据库,例如商品id、名称、发布的商家、发布日期、上架状态扩展表:将变化的信息放到另外一个表,可以是数据库表,例如电脑商品一个表、服装一个表;也可以将信息放到MongoDB或者ElasticSearch这类文档数据库。搜索组件:扩展表在全文搜索的时候不好实现,因此需要独立的组件负责搜索,可以用Elastic Search或者Solr来冗余一份数据,用于搜索。表结构不算复杂,因为项目关系只有SPU,没有涉及到SKU,但是可以做参考,更多的还是要根据项目实际情况设计。重点说明一下产品表的SPU,Keyword字段。本来之前设计了关系表,但是发现在做SQL查询时太痛苦,所以约定了一种数据存储结构(数据结构的重要性)基于上面的基础,可以实现URL规则变化的查询,类似京东的产品查询URL变化c=1,3 指分类层次关系ev=3_1+4_18 指SPU查询 按约定规则转换成字符串再进行查询。
2024-11-30 11:47:01
这里涉及几个概念:商品、商品SKU、商品分类和库存。一个商品有若干个SKU,每个SKU表示该商品的一种规格组合,比如某件上衣:红色+38码库存是基于商品SKU来存储和统计的。商品分类。看分类的方式,传统的分类方式是按商品的类型,比如服装 --> 上衣 等。也有按促销活动、系列来进行临时分类。对于SKU属性,按分类来管理可能灵活性不够好我建议的SKU属性设计方式是:独立的SKU属性集合,每个SKU集合独立维护SKU属性和选项。SKU属性的命名一般和分类相关。SKU属性集合和商品分类关联,这样避免在添加商品时列出太多的SKU属性集。维护商品时关联一个SKU属性集合根据属性集合带出SKU属性,选择若干个选项,生成笛卡尔乘数量的商品SKU逐一维护每个SKU的价格、库存等。
2024-11-30 13:40:58
你先把产品分分类,设好SKU。然后产品表就按SKU来建。产品属性则可以分类设计不同的表结构,根据SKU来外键做关联。产品属性表应以SKU编号为表名,以确保一致性,即使今后调整表结构也不至于对代码影响太大。用非关系型数据库,例如mongodb。如果你一定要用关系型数据库,那么就是商品属性作为一个表,一个商品有多个商品属性。同类型的商品制定商品模板。首先来说对于这种场景有两种设计方法,这两种方法都能够满足扩展性要求,把原有的横表转化为纵表存储属性,保持原有横表设计思路,但是弹性字段含义单独元数据表存储。