我是PHP和MySQL的新手,需要帮助解决我面临的问题。我正在尝试创建一个比以下更清洁的表:
表格示例
项目|部分|数量
Item1 | 123 | 2
Item1 | 124 | 2
Item2 | 123 | 1
Item2 | 125 | 3
我可以使用普通表执行此操作,但我可以设想数据库具有大量具有重复数据的重复行。例如,我多次使用Item1来识别每个部分。
我想知道是否有更简洁的方法将这些数据存储在我的数据库中?我将使用PHP将数据存储到MySQL中。我也希望使Item列唯一,但就目前而言,不能这样做。
我查看了序列化,加入以及数组,但我无法弄清楚如何使它完全合适所以我想我会问这里。最终结果将是一份PHP报告:
第1项使用以下部分
第123部分:数量2
第124部分:数量2
第2项使用以下部分
第123部分:数量1
第125部分:数量3
非常感谢任何帮助。
答案 0 :(得分:5)
您的商品与零件之间存在多对多关系。
所以你需要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 |
编辑:如果要使用查询操作数据,请不要以数据库本机格式存储数据。如果您以非原生格式存储数据,您将很难操纵它,而且速度很慢。