我有一个产品表作为 NodeID |父节点ID | NodeName 其中“节点”可以是“产品”或“类别”。比如说:
节点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 ||属性名 ||值(value)|| NodeID 我将在其中保留特定 NodeID(例如诺基亚 1100)的所有属性及其对应值。
因此当用户发布“Nokia 1100”时,他将在 UI 中拥有所有带有预填充值的属性。
假设现在用户发布的内容不在数据库中,例如。说他正在发布“三星焦点”。他现在可以选择要发布此请求的“类别”,在本例中为“手机”。
所以我想要的是以某种方式,应该向用户显示仅与手机相关的属性(有/没有默认值),然后用户可以选择适用的任何一个,然后发布请求。
为此,我正在考虑将一些默认属性放入“类别”,只要他选择该类别,这些属性就可用。
但我无法为这种方法和关系提出合适的表结构。我的意思是,单个类别可能有多个属性,每个属性可能有多个值。
我希望我能够描绘出我想在这里做的事情, 任何帮助表示赞赏。
最佳答案
听起来您正在寻找 EAV(实体属性值)模式
http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
请注意,尽管这种方法(有人说是反模式)布满了陷阱。
关于asp.net - 如何在数据库中维护产品的 "specification-value(s)"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12567437/