Mysql 应用产品属性
我的数据库中有一个基本产品表 该表记录了每个产品共有的大部分产品价值,如价格、mrp、名称、sku等 现在,每个产品都有一些不同的属性,这些属性不适用于每个产品。衬衫有尺寸和颜色,显示器或手机有不同的显示分辨率,书有ISBN和作者姓名等等 我也需要这些属性。谁能给我一个如何做的提示Mysql 应用产品属性,mysql,database,database-design,attributes,Mysql,Database,Database Design,Attributes,我的数据库中有一个基本产品表 该表记录了每个产品共有的大部分产品价值,如价格、mrp、名称、sku等 现在,每个产品都有一些不同的属性,这些属性不适用于每个产品。衬衫有尺寸和颜色,显示器或手机有不同的显示分辨率,书有ISBN和作者姓名等等 我也需要这些属性。谁能给我一个如何做的提示 关于stackoverflow和google,我已经问了几个问题,但是我不知道怎么做才对,否则我就不会冒在stackoverflow上被否决的风险。尽管不是最好的选择,但我通常做的是定义一个名为attributes
关于stackoverflow和google,我已经问了几个问题,但是我不知道怎么做才对,否则我就不会冒在stackoverflow上被否决的风险。尽管不是最好的选择,但我通常做的是定义一个名为attributes的Varchar字段,它是一个json,包含我想要的数据 当然,这只有在从编程语言访问数据时才有用。请记住,这样您将无法对这些属性进行连接 另一个更面向数据库的可能性是定义一个项目类型,然后为每个类型定义一个属性表。例如,T恤衫的类型为0,那么您有类似于0的属性(或T恤衫属性) 一个主要缺点是,您无法在单个查询中检索每个项目及其属性。计划A: 第一步。决定哪些字段将用于搜索或排序 第二步。将列表从第1步缩减到不超过5个字段。选择最有用的 第三步。创建一个包含这5个字段的表,再加上一个
TEXT
字段,用于JSON
收集有关项目的所有杂项数据。(也可以包括5个。)
第四步。构建复合索引,以处理许多(但可能不是全部)常见查询
方案B:
转换为MariaDB并使用其“动态列”和其他技术,包括JSON文本中的索引字段。这是一个很难解决的问题。事实上,它触及了数据建模的本质,即存在多个潜在的解决方案,但不一定所有的解决方案都一样好。哪一个是最好的取决于您的实际数据-有多少不同的产品子集,有多少属性在子集之间共享,有多少属性不共享,使用场景是什么(您的查询将访问所有产品还是仅访问类似产品的子集?),等等 因此,有些选择是: