存储不同类型的产品数据的正确方法是什么


What is the right approach for storing different types of product data

我正在创建一个应用程序,将产品数据存储在(现在)关系数据库中。但洗衣机的性能与笔记本电脑不同。它们都是一种产品,总是有价格、标题、描述和图像,但只有笔记本电脑有硬盘(大部分)

那么,选择什么作为模特呢?

  1. key=>带有megajoins的值元表
  2. 所有东西都放在一张桌子上
  3. 为每个类别创建一个产品表和一个联接表
  4. 独角兽质量的解决方案我不知道

我赞成选项3,但这仍然感觉不对,很难扩展,我不确定我是否忘记了什么,或者我多年的关系php/mysql思维正在引导我远离另一个更好的选择。

您需要一种键/值表来以关系方式解决此问题。

但也有一些事情需要考虑。洗衣机可以具有1200或1400转/分,但肯定不是367转/分。因此,有些值必须从列表中选择,而其他值则是自由文本。然后可能有一些值是强制性的,而其他值则不是强制性的,例如,一台可能带有键盘(您可以进一步指定)或不带有键盘的计算机。

但假设只有值列表属性(没有自由文本),对于可选属性,列表中有一个条目"none",而对于强制性的not。然而,这意味着,突然之间,一个类别的所有属性都是"强制性的"(即,对于PC,你必须说出什么键盘,即使它是"无",而对于椅子,你不能)。

这导致了类似的情况:

表格类别

category_id文本c1 PCc2洗衣机

桌上产品

product_id category_id文本。。。p1 c2 Washy WM1000p2 c1超级PC

表格属性

property_id文本100转/分200键盘

表属性值

value_id属性_id文本21 100 120022 100 140023 200带数字键盘24 200,不带数字键盘25200无

类别_属性

category_id属性_idc1 200c2 100

产品值

product_id value_id第122页第23页

也有同样的困境。选择一个包含基本信息的产品数据库,另一个包含网店信息的数据库,然后是用于存储标签的键值数据库,以及显示在单独页面(详细信息页面)上的自定义规范

在限制的组合中添加位置或类别限制,以保持查询的快速性并查看云数据库托管。