PyCharm 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 ドキュメントへのパスを変更または表示するには、 Shift+Enter を押してデータソース設定を開き、 オプション タブをクリックして、 Virtual objects and attributes フィールドを確認します。

仮想外部キー (仮想外部キー) は、 データベース ツールウィンドウにあります。

データベースの仮想外部キー

仮想外部キーを作成する

  1. データベース ツールウィンドウで、テーブルのノードまでデータソースツリーを展開します。

  2. テーブルノードを右クリックし、 New | Virtual Foreign Key を選択します。

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

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

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

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

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

  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 ファイルのディレクトリを指定し、 保存 をクリックします。

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

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

正規表現を使用して、PyCharm がテーブルのある列を別のテーブルの列に指すルールを作成できます。

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

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

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

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

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

    Check... ボタン (チェックボタン) を使用してルールを確認できます。 ルールを選択して Check... ボタンをクリックすると、 Rule debugger ダイアログが開きます。 結果は Generated pattern: フィールドで確認できます。 Generated pattern: フィールドの結果の式は、目的の Target table.column: パターンと一致する必要があります。

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

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

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

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

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

  4. Rule debugger ダイアログで、次のフィールドに入力します。

    • Column pattern:: 仮想外部キーとして使用する列名に一致する正規表現。

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

    • Target column pattern:: Column pattern: 式の一致を使用し、正規表現として解釈される置換パターン。 結果は Generated pattern: フィールドで確認できます。 結果は、 Source column: フィールドに列名の例を指定した場合にのみ表示されることに注意してください。

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

      メモ: Target column pattern: 置換パターンは、キャプチャーされたグループを使用して パターンを生成する フィールドに正規表現パターンを生成するために使用されます。 式の例($1\\.(?i)id )のドットのように文字通り翻訳されたシンボルをダブルエスケープしたことを確認してください。

    • Source column:: 仮想外部キーとして使用する列名の例。

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

    • Target table.column:: Source column: の仮想外部キーの主キーとして使用されるテーブル名と列名の例。

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

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

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

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

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

  2. SQL セクションまでスクロールし、 Suggest non-strict foreign keys based on the name matching を選択します。

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