【问题标题】:Looking for a better way to store a table using PHP and MySQL [closed]寻找使用 PHP 和 MySQL 存储表的更好方法 [关闭]
【发布时间】:2015-01-22 19:47:12
【问题描述】:

我是 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

任何帮助将不胜感激。

【问题讨论】:

标签: php mysql join serialization


【解决方案1】:

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

所以你需要 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 |

编辑:如果您想通过查询来操作数据,请不要以非数据库原生的格式存储数据。如果您以非本地格式存储数据,您将很难对其进行操作,而且速度会很慢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多