所以当我想要解决这个问题时,我正在脑子里崩溃。我所拥有的是一些数据库:
tblGenre
genreID
genreName
tblArtist
artistID
artistName
genreID
tblAlbum
albumID
albumName
artistID
一切都很好,工作得很好。好的,现在问题......
我想弄清楚的是如何链接一个有多个名字的艺术家。即艺术家'王子'。我有他的专辑,我将在3个不同的乐队下进行编目; Prince(artistID = 5),Prince和新一代(artistID = 17,“Symbol”(artistID = 43)......
所以,当我查找艺术家ID为5的艺术家“Prince”时,如何将其他2个乐队链接到这个?我是否会创建一个单独的数据库,其中包含每个artistID的逗号分隔值(即5,17,43),还是有更简单的方法来执行此操作?
我不想进入专辑级别,在我的数据库中的每张专辑中播放谁。我只想创建一个有多个乐队的艺术家链接。还有一些我想要“迷上”的例子......
Tom Petty(经典摇滚)
王子(Funk)
Mark Knopfler(经典摇滚)
感谢您的投入。
答案 0 :(得分:3)
您有两种选择:
1)ARTISTS表和ARTISTS_ALIASES表,其中artistid是ARTISTS_ALIASES表中的外键,你的ALBUM表中会有一个artist_aliasid,所以你知道艺术家在该专辑中出现的名称;或
2)使用递归的单个ARTISTS(如EMPLOYEE BOSS表):
artistid
artistname
primaryartistid (references artistid in this table
当artistid和primaryartistid相同时,您将该行视为“基础”艺术家。
答案 1 :(得分:0)
我会创建一个像 tblRelatedArtists 这样的表,它有两列:.artistID和.relatedArtistID。
当您查询数据库时,您可以内部加入 tblArtist
where .artistID is in (select relatedArtistID from tblRelatedArtists as innerArtists where innerArtists.artistID = outerArtists.artistID)
。
答案 2 :(得分:0)
Drew,听起来tblArtist比专辑的主要演员更多乐队。我看到你在问题中列出了vb,所以我也假设你在这个应用程序上有一个vb前端。有了所有这些假设,我建议你在tblArtist中添加一个名为altArtistId的varchar列。将此列添加到前端的重新记录集中。解析逗号分隔列表并返回到tblArtist以获取任何相关信息。