我发布了一周左右的关于我正在尝试构建的数据库结构的文章。我没有深入到它的复杂性,所以这就是我转帖的原因。在这个示例中,我使用了CD集合作为示例。
我知道我需要一个查询表,比如我的流派或出版商。这不是一个需要管理的大问题。
但是在这个项目中有八个查找表,其中一些表中有150个条目。据我所知,我需要一个单独的条目来记录CD及其数据的排列。因此,如果我在一个查找表中平均有20个条目,那么每张CD就是20 x 20个排列。还是我误会了?我如何才能有效地创建一个主表来拉入所有数据,而不是每个排列都有单独的行。我是否需要编写一些更复杂的SQL来管理所有这些内容?
帮助!
发布于 2011-03-17 07:08:21
使用CD示例简要概述SQL中的链接表。
每张光盘只能有一个标签。我们创建一个标签表,如下所示:
Label TableLabelID INT(11) NOT NULL auto_increment PRIMARY KEY,
LabelName VARCHAR(255) NOT NULL, 然后在CD表中,我们有对标签的外部引用
In CD TableLabelID INT(11) NOT NULL,当我们想要查看结果时,我们做一个连接...如下所示:
select *
from CD
join Label on CD.LabelID = label.LabelID一对多。
假设您有一个一对多的关系,那么您需要一个连接表(我相信这就是您感到困惑的地方)。
首先,我们有了所有可用的艺术家表(注意,艺术家表中可以有更多数据--道布,家乡……等。
Artist TableArtistID INT(11) NOT NULL auto_increment PRIMARY KEY,
ArtistName VARCHAR(255) NOT NULL DEFAULT ''然后我们创建一个连接表。这将把一张CD加入到许多艺术家中。CD在此表中可以有一个或多个行,表示指向CD上的艺术家的每个链接。
CD2Artist TableCDID INT(11) NOT NULL,
ArtistID INT(11) NOT NULL当然,我们需要CD的ID才能正常工作。在CD表中
CDID INT(11) NOT NULL auto_increment PRIMARY KEY然后选择一个特定CD的艺术家列表,你可以这样说
SELECT artist.artistname
from cd2artist
join artist on cd2artist.artistID = artist.artistID
where CDID = <put cd id here>https://stackoverflow.com/questions/5332485
复制相似问题