mySQL 我是否需要多个索引来将具有外键的多个表连接到单个主表?

标签 mysql relational-database

我正在建立一个记录收集数据库。我有一个主发布表,其中包含标题、艺术家、格式、国家/地区、日期、标签等 - 每个表都将是一个单独的表,其中有一个外键连接回发布。我的问题是,各自表中的所有外键是否都连接到 Release 中的一个主键 (id),还是每个外键都连接到 Release 中相应的索引整数键?说到索引 - 是否有必要对上述所有要搜索的内容创建一个单独的索引?

谢谢

最佳答案

根据您提供的信息,您将拥有以下表格结构

发布

ID、标题、艺术家 ID、格式 ID、国家/地区 ID、日期、标签 ID

艺术家 ID(Release 表中 ArtistID 的外键)、名称等

格式 ID(版本表中 FormatID 的外键)、名称等

等等等等

is it then necessary to create a separate index on all of the above which will be searched?

取决于您计划如何搜索表格

编辑:

OK so each of the foreign keys in each table connects to its own id in the Release table - not the primary id, correct?

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

As for search it would be for example, search Artist (table will have first name, last name or group name) which should connect to that Artist's releases

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

如果您阅读更多有关关系数据库设计和规范化的内容,将会有所帮助。

关于mySQL 我是否需要多个索引来将具有外键的多个表连接到单个主表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377252/

相关文章:

php - Docker MySQL mysqli::real_connect():(HY000/2002):连接被拒绝

php - 如何将两张表合并起来,用一个名字来调用。 [代码点火器]

mysql - mysql如何获取时差超过1小时的上下数据..?

mysql - 将一个大数组存储到 MySQL 表中

database - 给定与 FD 的关系,计算属性集的闭包

mysql - 添加最新结果

php - 如何在 jquery 上使用循环来缩短我当前的代码?

mysql - MYSQL中的交叉检测

配置文件和订单的数据库模式

relational-database - 解析相关对象的惯用且高效的方法是什么?