2

私は3つのテーブルを持っています:

ユーザーID

フォルダ: id、user_id

単語: id、folders_id

(すべてのテーブルにはさらに多くの列がありますが、この問題には関係ありません)

ユーザーには複数のフォルダーが含まれており、各フォルダーには複数の単語が含まれています。

ここまでは順調ですね。MySQL Workbench を使用して、これらのテーブルを外部キーと相互接続しました。

MySQL-Workbench が最初の接続 (folders.user_id -> user.id) に対して行うことは、予想どおりです。しかし、2 番目の関係 (words.folders_id -> Folders.id) を追加すると、2 つの列に対するインデックスが自動的に生成されます。予想される 1 つの Folders.id だけでなく、最初の外部キー Folders.user_id の列に対してもインデックスが生成されます。

これは、2 番目の外部キーを追加した後の MySQL Workbench のスクリーンショットです。 自動的に、これは最初の外部キーの列に対しても生成されます:folders.user_id

私はいつも、MySQL データベースの重複データは良い解決策ではないと考えていました。しかし、なぜ MySQL-Workbench は私にこの方法を提案するのでしょうか? 私が考えることができる唯一の利点は、JOIN なしで直接単語からユーザーの ID を選択できることです。これは、2 つの列にまたがるこのインデックスの目的ですか?

この現象を説明してくれてありがとう。


私はまだ解決策を見つけていませんが、MySQL Workbench で関係図をGoogle 画像で検索すると、これらのネストされた外部キーは表示されません。したがって、それらは不要であると想定し、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 に答える