我想设计一个有两个表的数据库,彼此相关 但是我不能将一行与另一个表中的多行相关联 加:我只想使用MySQL的能力。不喜欢用“,”或其他标志分隔它们,让我的PHP应用程序检查所有行
这张照片可能会帮助您了解问题:
答案 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的解决方案仍然是最好的。