如何构建DB来存储不同的值

时间:2011-09-11 20:08:16

标签: mysql

标题可能不是很精确,但这是我想做的,并征求意见

我有两张桌子,一张是专门针对不同的艺术家,另一张是针对不同的音乐类型。 最后的想法是为一位艺术家分配一种或多种类型。

我正在考虑使用tbl_genre.ID并将其存储在tbl_artist.genre中,但这不起作用(使用LIKE %%在tbl_artist中搜索特定类型时可能出现问题)。

另一种选择可能是创建第3个表并将所有与艺术家相关的类型ID存储在一个单独的行中,但不知何故,这个解决方案看起来“蹩脚”,我想知道是否有更好的。

感谢。

3 个答案:

答案 0 :(得分:5)

这是一种非常典型的多对多关系。类型有许多艺术家和艺术家可以有很多类型。您需要使用第三个“连接”表来完成此操作。我会称它为tbl_artists_genres,它只有两个字段,artist_id和genre_id。

答案 1 :(得分:2)

你的“跛脚”解决方案是正确的。您应该创建一个包含ArtistID和GenreID的表格,并为此表格为艺术家所属的每个类型添加一行。

答案 2 :(得分:0)

地图表是一个非常好的解决方案(你称之为“跛脚”)。另一种更加非规范化的解决方案是将艺术家表格中所有类型的ID存储在表格字段中。使用标准格式(如JSON)来序列化和反序列化此字段。