外部キー
外部キーの関係は、テーブルが相互にどのように関係するかを指定し、テーブル間の関係を示します。IntelliJ IDEA は、データベーススキーマ内の外部キー関係を認識し、使用して JOIN 句を構築します。これらの関係は、自動補完リスト、データナビゲーション、ダイアグラムで確認できます。
IntelliJ IDEA では、明示的な外部キーを使用するか、仮想外部キーを作成できます。
外部キー () は、データベースツールウィンドウにあります。他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデータソースとその要素の章を参照してください。テーブル列アイコンについては、列に可能なアイコンの組み合わせの章を参照してください。
![データベースの外部キー Foreign keys in Database](https://resources.jetbrains.com/help/img/idea/2024.1/database_object_foreign_key.png)
外部キーは、別のテーブルの主キーを参照する、1 つのテーブル内のフィールドまたはフィールドのコレクションです。テーブルを作成または変更するときに、これらのキーを明確に定義できます。
外部キーを含むテーブルは子テーブルです。候補キーを含むテーブルは、参照テーブルまたはターゲットテーブルです。データベースに明示的な外部キー関係が含まれている場合、IntelliJ IDEA はそれらを自動補完、データナビゲーション、ダイアグラムで自動的に使用します。
次の例では、activity.activity_id
は主キーであり、visitor.activity_id
は外部キーです。
外部キーを作成する
データベースツールウィンドウ ( ) で、テーブルのノードまでデータソースツリーを展開します。
テーブルノードを右クリックし、
を選択します。開いた変更ダイアログで、名前フィールドに外部キーの名前を入力します。
ターゲットテーブルペインで、ターゲット表の名前を指定します。
列ペインで、追加ボタン(
)をクリックします。
列名フィールドに、子テーブルの列の名前を指定します。
ターゲット名フィールドに、ターゲット表の列の名前を指定します。
プレビューペインでは、生成された SQL コードを表示および変更できます。
外部キーを追加するには、「OK」をクリックします。
![外部キーを作成する Create a foreign key](https://resources.jetbrains.com/help/img/idea/2024.1/db_create_foreign_key.png)
生産性のヒント
生成されたインデックスとキー名のテンプレートを変更する
インデックス、および主キー制約と外部キー制約を作成すると、それらのデフォルト名は対応するテンプレートに従って生成されます。たとえば、主キーの場合、テンプレートは {table}_{columns}_pk
です。
これらのテンプレートを表示および変更するには、設定 Ctrl+Alt+S を開き、コード生成タブをクリックしてください。
に移動します。テンプレートには変数とテキストを含めることができます。名前を生成すると、指定したテキストが文字通りに再現されます。例:
actor
テーブルに{table}_pk
テンプレートを適用すると、生成された主キーの名前はactor_pk
になります。変数とその使用箇所に関する情報を表示するには、フィールドをクリックして Ctrl+Q を押します。
{unique?u:}
は、インデックスが一意かどうかを確認し、対応する一連の文字を挿入します。索引が固有の場合、テンプレートは?
と:
の間に指定された文字のシーケンスを使用して名前を生成します。{unique?u:}
テンプレートの場合はu
です。インデックスが一意でない場合は、:
と}
の間のシーケンスが挿入されます。{unique?u:}
テンプレートの場合、何もありません。サンプル
列
FirstName
とLastName
を持つpersons
テーブルがあります。{table}_{columns}_{unique?u:}index
テンプレートでは、一意ではないインデックスにpersons_FirstName_LastName_index
という名前が生成されます。
関連する行間を移動する
テーブルの列を右クリックして、移動を選択します。移動サブメニューでは、移動する関連行のタイプを選択できます。
被参照行 : 現在のオブジェクトによって参照されている行。
参照行 : 現在のオブジェクトを参照している行。
関連するすべての行 : 参照行と参照行の両方。
データエディターで、いくつかの値を選択し、関連データに移動できるようになりました。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/database_object_virtual_foreign_key.png)
仮想外部キー
明示的に定義された外部キーを使用したくない場合があります。外部キーを使用しない理由には、パフォーマンスの問題(CRUD 操作で)、データベースの特性(ClickHouse や Apache Cassandra などのデータベースは外部キーをサポートしません)、一時テーブルの使用(テスト用)、個人的な理由などがあります。この場合でも、データベースコードを変更せずに外部キーリレーションを作成できます。これを行うには、仮想外部キーを使用します。仮想外部キーは、IDE 仮想オブジェクトです。外部キーの代...
![](https://resources.jetbrains.com/help/img/idea/2024.1/db_database_tool_window.png)
データベースツールウィンドウ
データベースツールと SQL プラグインを有効にするこの機能は、IntelliJ IDEA にバンドルされており、デフォルトで有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。概要:データベースツールウィンドウ (表示...
![](https://resources.jetbrains.com/help/img/idea/2024.1/database_object_primary_key.png)
主キー
主キーには一意の値が含まれており、テーブル内の各行を識別します。一部のデータベースでは、主キーに NULL 値を含めることはできません。テーブルには主キーを 1 つだけ持つことができ、この主キーは単一または複数の列で構成できます。主キーが複数の列で構成されている場合、これらの列のデータを使用して行が一意であるかどうかが判断されます。主キー () は、データベースツールウィンドウにあります。他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデータソ...
![](https://resources.jetbrains.com/help/img/idea/2024.1/database_object_index.png)
インデックス
データベースインデックスは、データベーステーブル内の操作の検索とアクセスを高速化するために使用される構造です。インデックスを使用すると、クエリの処理時に必要なディスクアクセスの数が減少します。データベーステーブルの 1 つ以上の列にインデックスを作成できます。インデックス () は、データベースツールウィンドウにあります。他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデータソースとその要素の章を参照してください。テーブル列のアイコンについては...