2

我有一个产品表作为NodeID | 父节点 ID | NodeName,其中“node”可以是“Product”或“Category”。比如说:

节点ID | 父节点 ID | 节点名称

0|| ||根

1|| 0 || 电子产品

2 || 1 || 手机

3 || 2 || 三星

4 || 2 || 苹果

5 || 2 ||诺基亚

6 || 5 || 诺基亚 1100

7 || 5 || 诺基亚 Lumia 800

等等..

现在,Root > Electronics > Nokia 是类别,Nokia 1100 是产品。对于每个产品,我想要一组与产品相关的特定属性(规格)。我在带有列的表ProductAttributes中维护该关系:AttributeId || 属性名 || 价值 || NodeID ,我将保留特定 NodeID(例如诺基亚 1100)的所有属性及其对应值。

因此,当用户发布“诺基亚 1100”时,他将在 UI 中拥有所有带有预填充值的属性。

假设现在用户发布的内容不在数据库中,例如。说他正在发布“三星焦点”。他现在可以选择发布此请求的“类别”,在本例中为“手机”。

所以我想要的是,应该向用户显示仅与手机相关的属性(有/没有默认值),然后用户可以选择适用的,然后发布请求。

为此,我正在考虑将一些默认属性放入“类别”,只要他选择该类别,这些属性就可用。

但是我无法为这种方法和关系提出适当的表结构。我的意思是,一个类别可能有多个属性,每个属性可能有多个值。

我希望我能够描述我在这里尝试做的事情,任何帮助都将不胜感激。

4

1 回答 1

0

听起来您正在寻找 EAV(实体属性值)模式

http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

请注意,尽管这种方法(有人说是反模式)充满了陷阱。

于 2012-09-24T14:51:02.340 回答