gpt4 book ai didi

mysql - SQL表结构

转载 作者:行者123 更新时间:2023-11-29 14:53:01 24 4
gpt4 key购买 nike

我发布了大约一周的时间,介绍了我正在尝试构建的数据库结构。我没有完全理解它的复杂性,所以这就是我重新发布的原因。在示例中,我以 CD 收藏为例。

我知道我需要一个查找表来查找我的流派或出版商。这不是什么大问题,需要管理。

但是这个项目中有八个查找表,其中一些表有 150 个条目。据我了解建议的内容,我需要一个单独的 CD 条目及其数据排列。因此,如果查找表中平均有 20 个条目,那么每张 CD 就有 20 x 20 x 20 x 20 x 20 x 20 x 20 x 20 种排列。还是我误解了?如何有效地创建一个主表来提取所有数据,而无需为每个排列提供单独的行。我需要编写一些更复杂的 SQL 来管理所有这些吗?

救命啊!

最佳答案

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

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

Label Table
LabelID     INT(11) NOT NULL auto_increment PRIMARY KEY,
LabelName VARCHAR(255) NOT NULL,

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

In CD Table
LabelID     INT(11) NOT NULL,

当我们想查看结果时,我们进行连接...如下所示:

select *
from CD
join Label on CD.LabelID = label.LabelID
<小时/>

一对多。

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

首先,我们有所有可用艺术家的艺术家表(请注意,艺术家表中可以有更多数据 - 出生日期、家乡...等。

Artist Table
ArtistID     INT(11) NOT NULL auto_increment PRIMARY KEY,
ArtistName VARCHAR(255) NOT NULL DEFAULT ''

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

CD2Artist Table
CDID    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>

关于mysql - SQL表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com