Php 在MySQL表的一个单元格中放置多条记录

Php 在MySQL表的一个单元格中放置多条记录,php,mysql,Php,Mysql,我想设计一个包含两个相互关联的表的数据库。 但我无法将一行与另一个表中的多行关联。 另外:我只想使用MySQL的能力。不喜欢用“,”或其他符号将它们分隔开,让我的PHP应用程序检查所有行 此图片可能有助于您了解问题: 你有m-n关系,这意味着一个艺术家可以有多首歌,但一首歌也可以有更多的艺术家(你指出的问题)。因此,歌曲和艺术家之间的链接不能像您建议的那样出现在歌曲表中,也不能出现在艺术家表中-每行只能有一条记录 您需要另一个与歌曲和艺术家相关的表格: song_id artist_id 1

我想设计一个包含两个相互关联的表的数据库。
但我无法将一行与另一个表中的多行关联。
另外:我只想使用MySQL的能力。不喜欢用“,”或其他符号将它们分隔开,让我的PHP应用程序检查所有行

此图片可能有助于您了解问题:


你有m-n关系,这意味着一个艺术家可以有多首歌,但一首歌也可以有更多的艺术家(你指出的问题)。因此,歌曲和艺术家之间的链接不能像您建议的那样出现在歌曲表中,也不能出现在艺术家表中-每行只能有一条记录

您需要另一个与歌曲和艺术家相关的表格:

song_id  artist_id
1        2
2        2
...
6        2
6        4
...

创建一个名为
artist\u song
的新表,其中只有两个字段
artist\u id,song\u id

然后删除相关字段
艺术家


现在,您可以在这个新表中存储多个相关记录。

首先,您需要将数组/集合存储在一个表中,该表将用作外键。Mysql支持Set-as数据类型(这是有限的,有点固定),其中postgre和oracle使用array/varray(更灵活)作为数据类型

其次,我曾经使用orm(hibernate)来解决这个问题,为那个特定的表使用一个包装器类。我很确定从数组类型引用会损害DB的原子性


因此,在mysql中不可能实现您想要的内容(除非…)。Tomas的解决方案仍然是最好的解决方案。

您需要第三个表来存储关系。互联网上流传的大多数db教程都应该涵盖这个主题。这里有一个开始,您可以将
艺术家id
歌曲id
存储在第三个表中,而不是
相关艺术家
不要这样做;你只是在为自己的未来制造大量的问题。创建交叉引用表,而不是在现有表的单个列中存储多个记录ID。。。它叫normalizationreadabout third normal form你要找的关键字是“一对多”