2

我有三张桌子:

用户身份

文件夹:id、user_id

词:id,folders_id

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

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

到目前为止,一切都很好。我在 MySQL Workbench 的帮助下将这些表与外键互连。

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

这是添加第二个外键后 MySQL Workbench 的屏幕截图。 自动地,这个也是在第一个外键的列上生成的:folders.user_id

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

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


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

4

1 回答 1

0

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

select user.id from user
inner join folders on folders.user_id=user.id
inner join words on words.folder_id=folders.id
于 2013-01-01T19:20:30.207 回答