私は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 の列に対してもインデックスが生成されます。
私はいつも、MySQL データベースの重複データは良い解決策ではないと考えていました。しかし、なぜ MySQL-Workbench は私にこの方法を提案するのでしょうか? 私が考えることができる唯一の利点は、JOIN なしで直接単語からユーザーの ID を選択できることです。これは、2 つの列にまたがるこのインデックスの目的ですか?
この現象を説明してくれてありがとう。
私はまだ解決策を見つけていませんが、MySQL Workbench で関係図をGoogle 画像で検索すると、これらのネストされた外部キーは表示されません。したがって、それらは不要であると想定し、MySQL Workbench がそれらを作成するときにそれらを削除し続けます。