我是 PHP 和 MySQL 的新手,需要帮助解决我面临的问题。我正在尝试创建一个比以下更干净的表:
表格示例
项目 |零件 |数量
项目 1 |123 |2
项目 1 |124 |2
项目2 |123 |1
项目 2 |125 |3
我可以用普通表来做到这一点,但我可以设想数据库中有大量重复数据的重复行。例如,我多次使用 Item1 来识别每个部分。
我想知道是否有更简洁的方法将这些数据存储在我的数据库中?我将使用 PHP 将数据存储到 MySQL 中。我也希望使 Item 列独一无二,但目前无法做到这一点。
我研究了序列化、连接以及数组,但我无法弄清楚如何使它们都适合所以我想我会在这里问。最终结果将是一份 PHP 报告,内容如下:
项目 1 使用以下部分
第 123 部分:数量 2
第 124 部分:数量 2
项目 2 使用以下部分
第 123 部分:数量 1
第 125 部分:数量 3
如有任何帮助,我们将不胜感激。
您的项目和零件之间存在多对多关系。
因此您需要 3 个表(item、part 和 link_item_part)。
您的项目表将有一个 id 作为主键。您的零件表也是如此。您的 link_item_part 表将有一个由两个外键构建的复合主键,一个在项目上,另一个在零件上。
-- item table
| id | name |
+----+--------+
| 1 | Item 1 |
| 2 | Item 2 |
-- part table
| id | name |
+----+------+
| 1 | 123 |
| 2 | 124 |
| 3 | 125 |
-- link_item_part
| item_id | part_id | quantity |
+---------+---------+----------+
| 1 | 1 | 2 |
| 1 | 2 | 2 |
| 2 | 1 | 1 |
| 2 | 3 | 3 |
编辑:如果您想使用查询操作数据,请不要以非数据库 native 格式存储数据。如果您以非 native 格式存储数据,您将很难操纵它,而且速度会很慢。