PyCharm 2025.1 ヘルプ

外部キー

外部キー関係は、テーブル同士の関係を指定し、テーブル間の関係を示します。PyCharm は、データベーススキーマ内の外部キー関係を認識し、それを使用して JOIN 句を構築します。これらの関係は、自動補完リスト、データナビゲーション、およびダイアグラムで確認できます。

PyCharm では、明示的な外部キーを使用するか、仮想外部キーを作成できます。

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

Foreign keys in Database

外部キーは、別のテーブルの主キーを参照する、1 つのテーブル内のフィールドまたはフィールドのコレクションです。テーブルを作成または変更するときに、これらのキーを明確に定義できます。

CREATE TABLE visitor ( id int NOT NULL, activity_id int NOT NULL, PRIMARY KEY (id), FOREIGN KEY (activity_id) REFERENCES activity(activity_id) );

外部キーを含むテーブルは子テーブルです。候補キーを含むテーブルは、参照テーブルまたはターゲットテーブルです。データベースに明示的な外部キー関係が含まれている場合、PyCharm はそれらを自動補完、データナビゲーション、ダイアグラムで自動的に使用します。

次の例では、activity.activity_id は主キーであり、visitor.activity_id は外部キーです。

Explicit foreign keys

外部キーを作成する

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

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

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

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

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

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

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

  8. プレビューペインでは、生成された SQL コードを表示および変更できます。

  9. 外部キーを追加するには、「OK」をクリックします。

Create a foreign key

生産性のヒント

生成されたインデックスとキー名のテンプレートを変更する

インデックス、および主キー制約と外部キー制約を作成すると、それらのデフォルト名は対応するテンプレートに従って生成されます。たとえば、主キーの場合、テンプレートは {table}_{columns}_pk です。

  • これらのテンプレートを表示および変更するには、設定 Ctrl+Alt+S を開き、エディター | コードスタイル | SQL | 一般に移動します。コード生成タブをクリックしてください。

    テンプレートには変数とテキストを含めることができます。名前を生成すると、指定したテキストが文字通りに再現されます。例: actor テーブルに {table}_pk テンプレートを適用すると、生成された主キーの名前は actor_pk になります。

    変数とその使用箇所に関する情報を表示するには、フィールドをクリックして Ctrl+Q を押します。

    {unique?u:} は、インデックスが一意かどうかを確認し、対応する一連の文字を挿入します。索引が固有の場合、テンプレートは ?: の間に指定された文字のシーケンスを使用して名前を生成します。{unique?u:} テンプレートの場合は u です。インデックスが一意でない場合は、:} の間のシーケンスが挿入されます。{unique?u:} テンプレートの場合、何もありません。

    サンプル

    FirstNameLastName を持つ persons テーブルがあります。{table}_{columns}_{unique?u:}index テンプレートでは、一意ではないインデックスに persons_FirstName_LastName_index という名前が生成されます。

    Modify templates for generated index and key names
  • 表内の行またはセルを右クリックし、移動 | 関連するすべての行を選択します。

    または、セルを選択し、表示されるクイックアクションポップアップツールバーで the Related Rows icon 関連するすべての行をクリックします。

    Referenced and referencing data

    データエディターでは、複数の値を選択し、関連するデータに移動できます。

    アクション動作オプションの詳細については、詳細設定を参照してください。

関連ページ:

仮想外部キー

明示的に定義された外部キーを使用したくない場合があります。外部キーを使用しない理由には、パフォーマンスの問題(CRUD 操作で)、データベースの特性(ClickHouse や Apache Cassandra などのデータベースは外部キーをサポートしません)、一時テーブルの使用(テスト用)、個人的な理由などがあります。この場合でも、データベースコードを変更せずに外部キーリレーションを作成できます。これを行うには、仮想外部キーを使用します。仮想外部キーは、IDE 仮想オブジェクトです。外部キーの代...

データベースツールウィンドウ

データベースツールと SQL プラグインを有効にするこの機能は、PyCharm にデフォルトでバンドルされ有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。概要:データベースツールウィンドウでは、データベースと DDL デ...

詳細設定

PyCharm は、頻繁に使用する標準設定に加えて、特定の製品機能の動作を微調整するために使用できるさまざまな高度なオプションを提供します。詳細設定はさまざまなセクションで構成されているため、検索フィールドを使用して、関心のあるセクションまたは必要なオプションにすばやく移動できます。詳細オプションの一部にはレジストリキーが関連付けられているため、レジストリキーを検索することもできます。ブックマーク:ポップアップで行のブックマークのみを表示デフォルトでは、PyCharm はブックマークポップアッ...

主キー

主キーには一意の値が含まれており、テーブル内の各行を識別します。一部のデータベースでは、主キーに NULL 値を含めることはできません。テーブルには主キーを 1 つだけ持つことができ、この主キーは単一または複数の列で構成できます。主キーが複数の列で構成されている場合、これらの列のデータを使用して行が一意であるかどうかが判断されます。主キー () は、データベースツールウィンドウにあります。その他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデー...

インデックス

データベースインデックスは、データベーステーブル内の操作の検索とアクセスを高速化するために使用される構造です。インデックスを使用すると、クエリの処理時に必要なディスクアクセスの回数を減らすことができます。データベーステーブルの 1 つ以上の列に対してインデックスを作成できます。インデックス () は、データベースツールウィンドウにあります。その他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデータソースとその要素の章を参照してください。表の列ア...