嵌套外键(具有多个表)

时间:2012-12-31 16:14:49

标签: mysql foreign-keys mysql-workbench

我有三张桌子:

user:id

文件夹:id,user_id

单词:id,folders_id

(每个表中都有更多列,但它们与此问题无关)

用户包含多个文件夹,每个文件夹包含多个单词。

到目前为止一切顺利。我在MySQL Workbench的帮助下将这些表与外键相互连接。

MySQL-Workbench为第一个连接(folders.user_id - > user.id)做了什么就像我预期的那样。但是当我添加第二个关系(words.folders_id - > folders.id)时,它会自动生成两列索引:预期的一个folders.id,但也会在第一个外键folder.user_id

This is the screenshot of MySQL Workbench after having added the second foreign key. Automatically, this one is generated also over the column of the first foreign key: folders.user_id

我一直认为,MySQL数据库中的重复数据不是一个好的解决方案。但是为什么MySQL-Workbench建议我这样做呢?我能想到的唯一优势是,我可以直接从单词中选择用户的id而无需JOIN。这是两个列的索引的目的吗?

感谢您向我解释这一现象。


我还没有找到解决方案,但是当我在谷歌图片中搜索diagrams of relationships in MySQL Workbench时,这些嵌套的外键永远不会出现。所以我认为它们不是必需的,我只是在MySQL Workbench创建它们时继续删除它们。

1 个答案:

答案 0 :(得分:0)

为什么不按如下方式编写查询:

select user.id from user
inner join folders on folders.user_id=user.id
inner join words on words.folder_id=folders.id