存储不同类型的产品数据的正确方法是什么
What is the right approach for storing different types of product data
我正在创建一个将产品数据存储在(现在的)关系数据库中的应用程序。但是洗衣机与笔记本电脑具有不同的特性。它们都是一种产品,总是有价格、标题、描述和图像,但只有笔记本电脑有硬盘(大部分)
那么选择什么作为模特呢?
- key=> value metatable with megajoins.
- 一应俱全table。
- 为每个类别创建一个产品 table 和一个连接 table。
- 我不知道的独角兽质量解决方案。
我赞成选项 3,但这仍然感觉不对并且难以扩展,我不确定我是否忘记了什么或者我多年的关系 php / mysql 思考正在引导我远离另一个更好的选择。
有同样的困境。选择一个包含基本信息的产品数据库,另一个包含网上商店信息的数据库,然后是用于存储标签的键值数据库,以及显示在单独页面(详细信息页面)上的自定义规范
在组合中添加位置或类别限制以保持快速查询并查看云数据库托管。
你需要一种 key/value table 来解决这个问题。
但有些事情需要考虑。洗衣机的转速可能是 1200 或 1400 rpm,但肯定不是 367。所以有些值必须从列表中选择,而其他值可以是自由文本。然后可能有一些值是强制性的,而其他值则不是,例如可能带有键盘(您可以进一步指定)或不带有键盘的计算机。
但是假设只有值列表属性(没有自由文本),对于可选属性,您在列表中有一个条目 'none' 而对于强制性则没有。然而,这意味着突然间一个类别的所有属性都是 "obligatory"(即对于 PC,你 必须 说出什么键盘,即使它是 'none',而对于一把椅子,你不能)。
这会导致类似这样的结果:
table 类别
category_id text
c1 PC
c2 Washing machine
table 产品
product_id category_id text ...
p1 c2 Washy WM1000
p2 c1 Super PC
table 属性
property_id text
100 rpm
200 keyboard
table property_values
value_id property_id text
21 100 1200
22 100 1400
23 200 with numpad
24 200 without numpad
25 200 none
category_properties
category_id property_id
c1 200
c2 100
product_values
product_id value_id
p1 22
p2 23
我正在创建一个将产品数据存储在(现在的)关系数据库中的应用程序。但是洗衣机与笔记本电脑具有不同的特性。它们都是一种产品,总是有价格、标题、描述和图像,但只有笔记本电脑有硬盘(大部分)
那么选择什么作为模特呢?
- key=> value metatable with megajoins.
- 一应俱全table。
- 为每个类别创建一个产品 table 和一个连接 table。
- 我不知道的独角兽质量解决方案。
我赞成选项 3,但这仍然感觉不对并且难以扩展,我不确定我是否忘记了什么或者我多年的关系 php / mysql 思考正在引导我远离另一个更好的选择。
有同样的困境。选择一个包含基本信息的产品数据库,另一个包含网上商店信息的数据库,然后是用于存储标签的键值数据库,以及显示在单独页面(详细信息页面)上的自定义规范
在组合中添加位置或类别限制以保持快速查询并查看云数据库托管。
你需要一种 key/value table 来解决这个问题。
但有些事情需要考虑。洗衣机的转速可能是 1200 或 1400 rpm,但肯定不是 367。所以有些值必须从列表中选择,而其他值可以是自由文本。然后可能有一些值是强制性的,而其他值则不是,例如可能带有键盘(您可以进一步指定)或不带有键盘的计算机。
但是假设只有值列表属性(没有自由文本),对于可选属性,您在列表中有一个条目 'none' 而对于强制性则没有。然而,这意味着突然间一个类别的所有属性都是 "obligatory"(即对于 PC,你 必须 说出什么键盘,即使它是 'none',而对于一把椅子,你不能)。
这会导致类似这样的结果:
table 类别
category_id text c1 PC c2 Washing machine
table 产品
product_id category_id text ... p1 c2 Washy WM1000 p2 c1 Super PC
table 属性
property_id text 100 rpm 200 keyboard
table property_values
value_id property_id text 21 100 1200 22 100 1400 23 200 with numpad 24 200 without numpad 25 200 none
category_properties
category_id property_id c1 200 c2 100
product_values
product_id value_id p1 22 p2 23