0

我有一张表格,其中包含有关我拥有的每项资产(笔记本电脑、屏幕、台式机、扫描仪等)的信息。我还有另一个表,其中每个资产都有自定义列(因此对于特定桌面,我可以有一个名为“颜色”的自定义列)...快速说明:

资产表

AssetID     Description
---------------------------
1           Desktop HP79801

资产自定义列

AssetID     Column1     Column2
-----------------------------------
1           Color       BluRay ?

现在我想存储每一列的值。我目前为每个单元做的方式是:

AssetID     UnitID      Column1     Column2
-----------------------------------
1           1           Blue        Yes
1           2           Blue        No
1           3           Black       No
1           4           Blue        Yes

现在我的问题是,有没有更有效的方法来做到这一点,我怎样才能以有效的方式将列数增加到无穷大?可能吗 ?

最后,如何高效存储自定义产品属性?

4

2 回答 2

2

简而言之,是的。

你所拥有的东西根本无法扩展。您想要的是为您的资产提供一个表格、一个用于自定义参数的表格和一个“链接”表格。然后,在链接表中输入多个值而不是多个列。

举个例子:

资产表

AssetID     Description
---------------------------
1           Desktop HP79801

属性栏

AssetAttr       Column1     
-----------------------------------
1               Color
2               Size

链接表

AssetID     UnitID      AttrId        AttrValue 
-----------------------------------
1           1           1             Blue
1           1           2             Big
1           2           1             Orange
1           2           2             Giant

如果您的属性都是特定于模型的,您可能还想在AssetId您的资产自定义列中添加一列,但我个人不会这样做,除非您的资产根本没有共享属性。

您可能还想进一步标记它。您可能想用数据类型注释属性表,并且可能有另一个与属性表相关的表,其中包含可能的数据值,然后,在您的链接表中,插入来自上述表的条目的 ID。

于 2012-10-03T18:50:04.990 回答
0

另一种解决方案是完全使用模式较少的数据库。我最喜欢的是Mongo。另一种选择是CouchDB或众多键值数据库之一。

不要在这里开始一场 noSQL 战争,但这些数据库可以更优雅地处理此类情况 - 单个文档可以存储所有数据并在没有任何连接或视图的情况下进行检索。

于 2012-10-03T18:54:20.643 回答