我有一张 table 。它包含两列 unique song
和 genre
。独特的歌曲存储一个字符串,并不重要。
Genres 包含一个字符串数组(适用于歌曲的流派),字符串中的元素数量是随机的(大到可以放弃数组并只增加额外的列)。
我知道这个设置在我设置的 mySQL 中不起作用,但这正是我需要的。
一种方法是序列化,但我非常希望能够查询所有摇滚歌曲,而不必先查询所有歌曲,反序列化,然后再找到我的匹配项。
由于所有数组内容都是同一类型,是否有支持这样输入的列? (int 在某种程度上是一个有限的整数数组,不是吗?)
最佳答案
您拥有多对多关系 - 一首歌曲可以有多种流派,多首歌曲可以使用一种流派。
创建一个名为 Song 的表,其中包含有关歌曲的信息和一些唯一标识符。为了争论,我们只说它是歌曲的名字:s_name。
创建一个名为 Genre 的表,其中包含有关流派的信息。也许您知道流派,以及有关它是什么音乐风格的一些信息。
最后,创建一个名为 SongAndGenre 的表,它将充当桥接表。它将有两列 - 歌曲 ID(在我们的示例中为 s_name)和流派 ID(例如,g_name)。如果歌曲 S 有多个流派 G1 和 G2,那么该歌曲将有两行 - (S, G1) 和 (S, G2)。
关于php - 在 mySQL 列中存储随机大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317876/