php - 存储每个 Assets 的自定义参数的最佳方式

标签 php mysql database

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

Assets 表

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

Assets 自定义列

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

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

到底如何高效存储自定义产品属性?

最佳答案

简而言之,是的。

你所拥有的根本无法扩展。您想要的是有一个 Assets 表、一个自定义参数表和一个“链接”表。然后,在链接表中输入多个值而不是多个列。

举个例子:

Assets 表

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

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

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

关于php - 存储每个 Assets 的自定义参数的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714840/

相关文章:

php - 如何查询5分钟内插入2次以上,邮箱地址相同,status=1的重复记录?

php - 将统计数据保存在 MySQL 数据库中以绘制折线图

mysql - CodeIgniter查询组并统计多个字段中的值(相同类型)

php - 为什么表字段没有显示像前三个字段那样的值?

php - 维基百科 API 只返回一小部分数据?

php - 如何对多个 MySQL 表执行大查询?

php - 如何使用 PHP 从具有多个同名列的 MySQL 行中获取结果?

php - 将 1 个 InnoDB 表添加到充满 MyISAM 表的数据库中(效果)

PHP表单在页面刷新后隐藏而不是在提交后隐藏?

java - 将输出序列化到数组列表中