首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL表结构

SQL表结构
EN

Stack Overflow用户
提问于 2011-03-17 06:13:29
回答 1查看 176关注 0票数 0

我发布了一周左右的关于我正在尝试构建的数据库结构的文章。我没有深入到它的复杂性,所以这就是我转帖的原因。在这个示例中,我使用了CD集合作为示例。

我知道我需要一个查询表,比如我的流派或出版商。这不是一个需要管理的大问题。

但是在这个项目中有八个查找表,其中一些表中有150个条目。据我所知,我需要一个单独的条目来记录CD及其数据的排列。因此,如果我在一个查找表中平均有20个条目,那么每张CD就是20 x 20个排列。还是我误会了?我如何才能有效地创建一个主表来拉入所有数据,而不是每个排列都有单独的行。我是否需要编写一些更复杂的SQL来管理所有这些内容?

帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-17 07:08:21

使用CD示例简要概述SQL中的链接表。

每张光盘只能有一个标签。我们创建一个标签表,如下所示:

代码语言:javascript
复制
Label Table
代码语言:javascript
复制
LabelID     INT(11) NOT NULL auto_increment PRIMARY KEY,
LabelName   VARCHAR(255) NOT NULL, 

然后在CD表中,我们有对标签的外部引用

代码语言:javascript
复制
In CD Table
代码语言:javascript
复制
LabelID     INT(11) NOT NULL,

当我们想要查看结果时,我们做一个连接...如下所示:

代码语言:javascript
复制
select *
from CD 
join Label on CD.LabelID = label.LabelID

一对多。

假设您有一个一对多的关系,那么您需要一个连接表(我相信这就是您感到困惑的地方)。

首先,我们有了所有可用的艺术家表(注意,艺术家表中可以有更多数据--道布,家乡……等。

代码语言:javascript
复制
Artist Table
代码语言:javascript
复制
ArtistID     INT(11) NOT NULL auto_increment PRIMARY KEY,
ArtistName   VARCHAR(255) NOT NULL DEFAULT ''

然后我们创建一个连接表。这将把一张CD加入到许多艺术家中。CD在此表中可以有一个或多个行,表示指向CD上的艺术家的每个链接。

代码语言:javascript
复制
CD2Artist Table
代码语言:javascript
复制
CDID    INT(11) NOT NULL,
ArtistID INT(11) NOT NULL

当然,我们需要CD的ID才能正常工作。在CD表中

代码语言:javascript
复制
CDID     INT(11) NOT NULL auto_increment PRIMARY KEY

然后选择一个特定CD的艺术家列表,你可以这样说

代码语言:javascript
复制
SELECT artist.artistname 
from cd2artist
join artist on cd2artist.artistID = artist.artistID
where CDID = <put cd id here>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5332485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档