2012-09-11 39 views
0

我正在创建一个记录收集数据库。我有一个包含标题,艺术家,格式,国家,日期,标签等的主要版本表 - 它们中的每一个都是一个单独的表格,其中一个外键连接到版本。我的问题是,它们的单独表中的所有外键都连接到Release中的一个主键(id),还是它们每个都连接到Release中对应的索引整数键?谈到索引 - 是否有必要为所有上述内容创建一个单独的索引来搜索?mySQL我需要多个索引来将多个表与外键连接到一个主表吗?

感谢

+0

您在发布表中没有ID列 – sarsnake

回答

1

考虑您所提供的信息,您将有以下表结构

发布

ID,标题,ArtistID,FormatID,CountryID,日期,LabelID

艺术家 ID(艺术家ID在发布表中的外键),名称等

格式 ID(外键FormatID在唱片集表),名称等

ECT等

是它然后必要对所有上述 的创建一个单独的索引哪些将被搜索?

取决于你如何计划表

EDITED搜索:

OK所以每次在每个表的外键连接到其自己的ID在 释放台 - 不是主要的ID,对吗?

没错。 ArtistID将连接到其中ID是主键的Artists表,但在Releases表中它是外键。除日期外,其余字段的想法相同。

至于搜索这将是例如,搜索艺术家(表将有 姓,名或组名)应连接到 艺术家的版本

然后创建一个索引在ArtistFirstName和ArtistLastName字段上 - 这些是Artists表中的字段,这是您的搜索要搜索的内容。如果您希望显示艺术家的发行版,那么您必须加入ArtistID上的艺术家和发布表(您将在搜索后获得)。

这将有助于您阅读关于关系数据库设计和规范化的更多信息。

+0

好了,因此每个表中的每个外键都连接到其在​​发布表中的自己的ID - 不是主ID,正确吗?至于搜索,例如,应该连接到该艺术家的版本的搜索艺术家(表格将具有名字,姓氏或组名称)。我不认为名字艺术家搜索是必要的,所以索引应该在艺术家表中,并且说,标签表而不是发布表? – user1356553

+0

我编辑了我的答案。 – sarsnake

+0

好的谢谢。我想我正确地做到了这一点。这只是我在这里发布的一个非常大的计划的开始:http://fanoss.ca/records-db.jpg 还缺少的是一个用于多对多关系的“查找表”但通过它我只能看到其中的一些 - (vinylInnerSleeve,VinylInserts,CDInsert,TapeInserts,相关性,乐器,声乐,合作者和角色)。我只想确保没有任何事情在我开始把它们放在一起之前不起作用。 – user1356553

相关问题