如何在MYSQL行中存储2D数组?

如何在MYSQL行中存储2D数组?,mysql,arrays,json,Mysql,Arrays,Json,这甚至可能不可能做到。我有一个包含项目的表。(item_id、item_name、description、用于反序列化为实际对象的json) 我的第二个表包含包。(包装标识、包装名称、价格、说明、项目清单(2D数组)) 2D数组需要将项目id值与数量匹配 通常,我只需将JSON数组序列化到项目列表点。但我担心item_id值会被删除或更改。我不能使用外键更改“级联”或“删除”子值。有没有办法在mysql行中存储一类子表 如果我的问题描述不清楚,请告诉我。我想确保其他任何试图找到答案的人都能遵循这

这甚至可能不可能做到。我有一个包含项目的表。(item_id、item_name、description、用于反序列化为实际对象的json)

我的第二个表包含包。(包装标识、包装名称、价格、说明、项目清单(2D数组)) 2D数组需要将项目id值与数量匹配

通常,我只需将JSON数组序列化到项目列表点。但我担心item_id值会被删除或更改。我不能使用外键更改“级联”或“删除”子值。有没有办法在mysql行中存储一类子表

如果我的问题描述不清楚,请告诉我。我想确保其他任何试图找到答案的人都能遵循这一点。如果有帮助的话,我以后可能会包括一些图片


解决方案:不,没有办法在MySQL行中存储2D数组。你必须使用桥牌桌。哦,好吧,至少有一个解决办法。解决方案总是存在的

你正在寻找的是所谓的多对多关系。通常创建一个额外的表,在两个表之间创建映射。以下是一个例子:


您正在寻找的是所谓的多对多关系。通常创建一个额外的表,在两个表之间创建映射。以下是一个例子:


您可以在数据库的列中始终存储2D数组,但存在一个问题,即从mysql检索数据时,您必须解析该列,而您的列将包含多个值。当您的表中有一个多值属性时,必须将其迁移到另一个表以规范化数据库设计


在您的案例中,您看到的是多对多关系,即一个包可能有许多项目,而一个项目可能被许多包占用。要解决多对多关系,必须引入一个新表,通常称为桥接表。该桥接表将从item表和package表中获取主键作为外键。添加此表的原因是为了消除冗余,这是规范化提供的许多功能之一。

您可以始终将2D数组存储在数据库的列中,但存在一个问题,即从mysql检索数据时,您必须解析该列,而您的列将包含多个值。当您的表中有一个多值属性时,必须将其迁移到另一个表以规范化数据库设计


在您的案例中,您看到的是多对多关系,即一个包可能有许多项目,而一个项目可能被许多包占用。要解决多对多关系,必须引入一个新表,通常称为桥接表。该桥接表将从item表和package表中获取主键作为外键。添加此表的原因是为了消除冗余,这是标准化提供的许多功能之一。

我能够使用第二个维度的索引作为键将2D数组存储为JSON对象。以下是12 x 4阵列的示例:


{“0”:“[0,0,0,0,0,0,0,0,0,0,0]”,“1”:“[0,0,0,0,0,0,0,0]”,“2”:“[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],“3”:“[0,0,0,0,0,1,1,1,1,0,0]”,

我能够使用第二维度的索引作为键将二维数组存储为JSON对象。以下是12 x 4阵列的示例:

{“0”:“[0,0,0,0,0,0,0,0,0,0]”,“1”:“[0,0,0,0,0,0,0,0,0],“2”:“[0,0,0,1,0,1,0,0],“3”:“[0,0,0,0,1,1,1,0,0]”