DataGrip 2026.1 Help

仮想外部キー

明示的に定義された外部キーを使用したくない場合があります。 外部キーを使用しない理由としては、パフォーマンスの問題(CRUD 操作)、データベースの特性(ClickHouse や Apache Cassandra などのデータベースは外部キーをサポートしていません)、一時テーブルの利用(テスト用)、個人的な理由などがあります。

この場合でも、データベースコードを変更せずに外部キーリレーションを作成できます。 これを行うには、 仮想外部キーを使用します。 仮想外部キーは、IDE 仮想オブジェクトです。 外部キーの代わりに、仮想キーはデータベースコードで定義されません。

次のクエリ例をご覧ください:

SELECT * FROM activity JOIN visitor ON visitor_id = visitor.id

visitor_id がデータベースの外部キーとして定義されていないと仮定します。 この JOIN 句では、 activity テーブルの visitor_id フィールドと visitor テーブルの id フィールド間のこの仮想関係を引き続き使用できます。 この関係を保存して後で使用することも、正規表現を使用して設定で仮想外部キーの ルールを構成することもできます。

仮想外部キー

仮想外部キー関係は external-data-<data_source_name>.xml に保存されます。 XML ファイルの別の名前や、このファイルを保存する別の場所を選択できます。 XML ドキュメントへのパスを変更または表示するには、 Ctrl+Alt+Shift+S を押してデータソース設定を開き、 オプション タブをクリックして、 仮想オブジェクトと属性 フィールドを確認します。

仮想外部キー (仮想外部キー) は データベースエクスプローラー にあります。

データベースエクスプローラーの仮想外部キー

仮想外部キーを作成する

  1. データベースエクスプローラー で、テーブルのノードまでデータソースツリーを展開します。

  2. テーブルノードを右クリックし、 新規 | 仮想外部キー を選択します。

  3. 開いた 変更する。 ダイアログで、仮想外部キーの名前を 名前 フィールドに入力します。

  4. ターゲットテーブル ペインで、ターゲット表の名前を指定します。

  5. ペインで、 追加 ボタン(追加ボタン )をクリックします。

  6. 列名 フィールドに、子テーブルの列の名前を指定します。

  7. ターゲット名 フィールドに、ターゲット表の列の名前を指定します。

  8. 仮想外部キーを追加するには、 OK をクリックします。

  9. <data_source_name> の外部データを保存; ダイアログが開いたら、 external-data-<data_source_name>.xml ファイルのディレクトリを指定し、 保存 をクリックします。

「変更」で仮想外部キーを作成するダイアログ
  1. ON 句のテーブル関係をクリックし、 Alt+Enter を押します。

  2. テーブルリレーションを保存 を選択します。

  3. <data_source_name> の外部データを保存; ダイアログが開いたら、 external-data-<data_source_name>.xml ファイルのディレクトリを指定し、 保存 をクリックします。

テーブルリレーションを保存

仮想外部キーのルールを作成する

正規表現を使うことで、DataGrip があるテーブルの列を別のテーブルの列に紐づけるルールを作成できます。

  1. 設定を開き(Ctrl+Alt+S)、 データベース | その他 に移動します。

  2. 仮想外部キー セクションを見つけます。

  3. テーブルで、 追加 ボタン (追加ボタンをクリック) をクリックします。

  4. カラムのパターン セルをダブルクリックし、仮想外部キーとして使用する列名に一致する正規表現を入力します。

  5. ターゲットカラムのパターン セルをダブルクリックし、置換パターンを入力します。 置換パターンは カラムのパターン 式からの一致を使用し、正規表現として解釈されます。

    確認 ... ボタン (Check ボタン) を使用してルールを確認できます。 ルールを選択して 確認 ... ボタンをクリックすると、 ルールデバッガー ダイアログが開きます。 結果は 生成されたパターン: フィールドに表示されます。 生成されたパターン: フィールドに表示される式は、目的の ターゲット table.column: パターンと一致する必要があります。

    仮想外部キーのルールを作成する

仮想外部キーのデバッグルール

  1. 設定を開き(Ctrl+Alt+S)、 データベース | その他 に移動します。

  2. 仮想外部キー セクションを見つけます。

  3. ルールを選択し、 確認 ... ボタン (Check ボタン) をクリックします。

  4. ルールデバッガー ダイアログで、次のフィールドに入力します。

    • カラムのパターン:: 仮想外部キーとして使用したい列名に一致する正規表現。

      例: _id 後置記号を使用する列を記述するには、 (.*)_(?i)id 正規表現を使用します。 この正規表現は、 visitor_idvisitor_Id などの列を検出し、 visitors を最初のキャプチャーグループ($1 )としてキャプチャーします。

    • ターゲットカラムのパターン: カラムのパターン: 式のマッチ結果を使用する置換パターンで、正規表現として解釈されます。 結果は 生成されたパターン フィールドに表示されます。 なお、結果は ソース列: フィールドに列名の例を入力した場合にのみ表示されます。

      例: カラムのパターン 式からキャプチャーされたグループ ($1) を使用し、ドット (.) と id を追加します。 この式は、主キーとして使用できる visitor.id 参照を生成します。

      メモ: ターゲットカラムのパターン: 置換パターンは、キャプチャーされたグループを含む正規表現パターンを パターンを生成する​ フィールドで生成するために使用されます。 例の式 ($1\\.(?i)id) のドットのように文字通りに変換されるシンボルは、二重にエスケープしてください。

    • ソース列:: 仮想外部キーとして使用したい列名の例。

    • 生成されたパターン: ターゲット table.column: 名前に一致する、生成された読み取り専用の正規表現パターン。 生成されたパターン: は、 ターゲットカラムのパターン: の置換パターンによって生成された結果です。

    • ターゲット table.column:: ソース列 の仮想外部キーの主キーとして使用されるテーブル名と列名の例:。

    仮想外部キーのデバッグルール

コード補完で仮想外部キーを表示する

DataGrip は、 JOIN ステートメントの可能なコード補完候補のリストを生成できます。 コード補完リストには、 JOIN ステートメントのテーブルの列と同じ名前を持つ他のテーブルの列の提案が含まれます。

例えば、 actor テーブルに次のカラムがあるとします: actor_idfirst_namelast_namelast_update。 候補リストには、他のテーブルに存在するこれらのカラム名前の補完候補が表示されます。

  1. Ctrl+Alt+S を押して設定を開き、 エディター | 一般 | コード補完 に移動します。

  2. SQL セクションまでスクロールし、 名前の一致に基づいて厳密でない外部キーを提案する を選択します。

    名前の一致に基づいて非厳密な外部キーを提案する
    名前の一致に基づいて厳密でない外部キーを提案するはオフです
2026 年 5 月 22 日