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

时间:2013-12-28 16:28:43

标签: php mysql

我想设计一个有两个表的数据库,彼此相关 但是我不能将一行与另一个表中的多行相关联 加:我只想使用MySQL的能力。不喜欢用“,”或其他标志分隔它们,让我的PHP应用程序检查所有行

这张照片可能会帮助您了解问题:

enter image description here

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

创建一个名为artist_song的新表,其中只有两个字段artist_id, song_id

然后删除字段related_artist

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

答案 2 :(得分:0)

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

其次,我曾经使用orm(hibernate)来使用特定表的包装类来解决这个问题。我很确定从数组类型引用会损害DB的原子性。你可以看到这个以供参考array as foreign key in oracle

所以它不可能在mysql中你想要什么(除非......)。Tomas的解决方案仍然是最好的。