Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在寻找使用PHP和MySQL存储表的更好方法_Php_Mysql_Join_Serialization - Fatal编程技术网

正在寻找使用PHP和MySQL存储表的更好方法

正在寻找使用PHP和MySQL存储表的更好方法,php,mysql,join,serialization,Php,Mysql,Join,Serialization,我是PHP和MySQL新手,需要帮助解决我面临的一个问题。我正在尝试创建一个更干净的表,然后执行以下操作: 表格示例 项目|部分|数量 项目1 | 123 | 2 项目1 | 124 | 2 项目2 | 123 | 1 项目2 | 125 | 3 我可以用一个普通的表来实现这一点,但我可以想象数据库中有大量重复数据的重复行。例如,我多次使用Item1来标识每个零件 我想知道是否有更干净的方法将这些数据存储在我的数据库中?我将使用PHP将数据存储到MySQL中。我也希望使项目列独特的,但因为它的立

我是PHP和MySQL新手,需要帮助解决我面临的一个问题。我正在尝试创建一个更干净的表,然后执行以下操作:

表格示例

项目|部分|数量

项目1 | 123 | 2

项目1 | 124 | 2

项目2 | 123 | 1

项目2 | 125 | 3

我可以用一个普通的表来实现这一点,但我可以想象数据库中有大量重复数据的重复行。例如,我多次使用Item1来标识每个零件

我想知道是否有更干净的方法将这些数据存储在我的数据库中?我将使用PHP将数据存储到MySQL中。我也希望使项目列独特的,但因为它的立场,不能这样做

我研究了serialize、join和数组,但我不知道如何使它们都适合,所以我想在这里问一下。最终结果将是一份PHP报告,其中说:

第1项使用以下部分

第123部分:数量2

第124部分:数量2

第2项使用以下部分

第123部分:数量1

第125部分:数量3


任何帮助都将不胜感激。

您的物品和零件之间存在多对多关系

所以您需要3个表(item、part和link\u item\u part)

项目表将有一个id作为主键。同样适用于零件表。您的link\u item\u part表将有一个复合主键,它由两个外键生成,一个在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 |

编辑:如果要使用查询操作数据,请不要以非数据库本机格式存储数据。如果您以非本机格式存储数据,您将很难对其进行操作,而且速度会很慢。

您的项目和部件之间存在多对多关系

所以您需要3个表(item、part和link\u item\u part)

项目表将有一个id作为主键。同样适用于零件表。您的link\u item\u part表将有一个复合主键,它由两个外键生成,一个在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 |

编辑:如果要使用查询操作数据,请不要以非数据库本机格式存储数据。如果您以非本机格式存储数据,您将很难对其进行操作,而且速度会很慢。

请阅读:Marc B是正确的,解决问题的第一步是数据库体系结构。对于你想要实现的目标,你需要规范化你的数据库。阅读以下内容:Marc B是正确的,解决问题的第一步是数据库架构。对于您试图实现的目标,您将需要规范化您的数据库。