PyCharm 2024.3 ヘルプ

データベースダイアグラム

データベースツールと SQL プラグインを有効にする

この機能は、PyCharm にデフォルトでバンドルされ有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。

  1. Ctrl+Alt+S を押して設定を開き、プラグインを選択します。

  2. インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。

ダイアグラムプラグインを有効にする

この機能は、PyCharm にデフォルトでバンドルされ有効になっている Diagrams プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。

  1. Ctrl+Alt+S を押して設定を開き、プラグインを選択します。

  2. インストール済みタブを開き、ダイアグラムプラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。

データベースダイアグラムは、データベースの構造とデータベースオブジェクト間の関係をグラフィカルに示します。データソース、スキーマ、テーブルのダイアグラムを生成できます。データベースオブジェクト間の関係を作成するには、キーと外部キーの使用を検討してください。

生成されたダイアグラムは、UML と PNG の 2 つの形式で保存できます。UML 形式は、PyCharm 用に特別に開発された内部形式です。他の製品ではサポートされていません。作成したダイアグラムを共有したい場合は、PNG の使用を検討してください。

また、実行計画を構築することもできます。実行計画は、データベース内のデータにアクセスするために使用される一連のステップです。実行計画の作成の詳細については、「クエリプランを視覚化する」を参照してください。

データベースオブジェクトのダイアグラムを生成する

  • データベースツールウィンドウ ( 表示 | ツールウィンドウ | データベース ) で、データベースオブジェクトを右クリックし、ダイアグラム | ダイアグラムの表示を選択します。

Generate a diagram for a database object
Generate a diagram for a database object

ダイアグラムの表示と管理

パンとズーム

  • ダイアグラムをパンおよびズームするには、垂直スクロールにはタッチパッド、スクロールバー、またはマウスホイールを使用し、水平スクロールには Shift + マウスホイールを使用します。Shift + マウスホイールを使用してズームすることもできます。

  • 拡大鏡ツールを使用するには、Alt キーを押したまま、ダイアグラムの目的の領域にマウスを置きます。マウスホイールを使用して、拡大鏡ツール内のダイアグラムの領域をさらに拡大します。

    Magnifier tool

列コメントを有効にする

  1. ダイアグラムを生成します。ダイアグラムの生成の詳細については、「データベースオブジェクトのダイアグラムを生成する」を参照してください。

  2. コメントボタン(the Comments button)をクリックしてください。

    Enable column comments

ダイアグラムオブジェクトに色を適用する

  1. データベースツールウィンドウ ( 表示 | ツールウィンドウ | データベース ) で、オブジェクトを右クリックし、ツール | 色の設定を選択します。

  2. 色を選択し、OK をクリックします。リフレッシュボタン () をクリックして、ダイアグラムをリフレッシュして色を適用します。

    Display of table colors

ダイアグラムのエクスポート

PyCharm では、さまざまな形式でダイアグラムをファイルやクリップボードにエクスポートし、Web エディターで開くことができます。ダイアグラムを印刷してイメージとして保存することもできます。これを行うには、ダイアグラムのコンテキストメニューで対応するアクションを使用します。

Web エディターでダイアグラムを開く

ダイアグラムをクリップボードにコピーする

  • ダイアグラムをクリップボードにコピーするには、ダイアグラムを右クリックし、ダイアグラムのエクスポート | クリップボードにコピーに移動して、形式を選択します。

    または、ダイアグラムツールバーのダイアグラムのエクスポートボタン (Export Diagram icon) をクリックし、対応するサブメニューで形式を選択します。

    サポートされている形式は次のとおりです。

    • Mermaid

      classDiagram direction BT class actor { varchar(45) first_name varchar(45) last_name timestamp last_update smallint unsigned actor_id } class node19 { smallint unsigned actor_id varchar(45) first_name varchar(45) last_name timestamp last_update blob column_nameimg } class actor_info { smallint unsigned actor_id varchar(45) first_name varchar(45) last_name text film_info } class address { varchar(50) address varchar(50) address2 varchar(20) district smallint unsigned city_id varchar(10) postal_code varchar(20) phone timestamp last_update smallint unsigned address_id } class category { varchar(25) name timestamp last_update tinyint unsigned category_id } class city { varchar(50) city smallint unsigned country_id timestamp last_update smallint unsigned city_id } class country { varchar(50) country timestamp last_update smallint unsigned country_id } class customer { tinyint unsigned store_id varchar(45) first_name varchar(45) last_name varchar(50) email smallint unsigned address_id tinyint(1) active datetime create_date timestamp last_update smallint unsigned customer_id } class customer_list { smallint unsigned ID varchar(91) name varchar(50) address varchar(10) zip code varchar(20) phone varchar(50) city varchar(50) country varchar(6) notes tinyint unsigned SID } class film { varchar(255) title text description year release_year tinyint unsigned language_id tinyint unsigned original_language_id tinyint unsigned rental_duration decimal(4,2) rental_rate smallint unsigned length decimal(5,2) replacement_cost enum('g', 'pg', 'pg-13', 'r', 'nc-17') rating set('trailers', 'commentaries', 'deleted scenes', 'behind the scenes') special_features timestamp last_update smallint unsigned film_id } class film_actor { timestamp last_update smallint unsigned actor_id smallint unsigned film_id } class film_category { timestamp last_update smallint unsigned film_id tinyint unsigned category_id } class film_text { varchar(255) title text description smallint film_id } class inventory { smallint unsigned film_id tinyint unsigned store_id timestamp last_update mediumint unsigned inventory_id } class language { char(20) name timestamp last_update tinyint unsigned language_id } class payment { smallint unsigned customer_id tinyint unsigned staff_id int rental_id decimal(5,2) amount datetime payment_date timestamp last_update smallint unsigned payment_id } class pet { varchar(150) pet varchar(150) name varchar(150) owner } class rental { datetime rental_date mediumint unsigned inventory_id smallint unsigned customer_id datetime return_date tinyint unsigned staff_id timestamp last_update int rental_id } class sales_by_film_category { varchar(25) category decimal(27,2) total_sales } class sales_by_store { varchar(101) store varchar(91) manager decimal(27,2) total_sales } class staff { varchar(45) first_name varchar(45) last_name smallint unsigned address_id blob picture varchar(50) email tinyint unsigned store_id tinyint(1) active varchar(16) username varchar(40) password timestamp last_update tinyint unsigned staff_id } class staff_list { tinyint unsigned ID varchar(91) name varchar(50) address varchar(10) zip code varchar(20) phone varchar(50) city varchar(50) country tinyint unsigned SID } class store { tinyint unsigned manager_staff_id smallint unsigned address_id timestamp last_update tinyint unsigned store_id } address --> city : city_id city --> country : country_id customer --> address : address_id customer --> store : store_id film --> language : original_language_id:language_id film --> language : language_id film_actor --> actor : actor_id film_actor --> film : film_id film_category --> category : category_id film_category --> film : film_id inventory --> film : film_id inventory --> store : store_id payment --> customer : customer_id payment --> rental : rental_id payment --> staff : staff_id rental --> customer : customer_id rental --> inventory : inventory_id rental --> staff : staff_id staff --> address : address_id staff --> store : store_id store --> address : address_id store --> staff : manager_staff_id:staff_id
    • PlantUML

      @startuml !theme plain top to bottom direction skinparam linetype ortho class actor { first_name: varchar(45) last_name: varchar(45) last_update: timestamp actor_id: smallint unsigned } class node16 as "actor_1 /* backup table */" { actor_id: smallint unsigned first_name: varchar(45) last_name: varchar(45) last_update: timestamp column_nameimg: blob } class actor_info { actor_id: smallint unsigned first_name: varchar(45) last_name: varchar(45) film_info: text } class address { address: varchar(50) address2: varchar(50) district: varchar(20) city_id: smallint unsigned postal_code: varchar(10) phone: varchar(20) last_update: timestamp address_id: smallint unsigned } class category { name: varchar(25) last_update: timestamp category_id: tinyint unsigned } class city { city: varchar(50) country_id: smallint unsigned last_update: timestamp city_id: smallint unsigned } class country { country: varchar(50) last_update: timestamp country_id: smallint unsigned } class customer { store_id: tinyint unsigned first_name: varchar(45) last_name: varchar(45) email: varchar(50) address_id: smallint unsigned active: tinyint(1) create_date: datetime last_update: timestamp customer_id: smallint unsigned } class customer_list { ID: smallint unsigned name: varchar(91) address: varchar(50) zip code: varchar(10) phone: varchar(20) city: varchar(50) country: varchar(50) notes: varchar(6) SID: tinyint unsigned } class film { title: varchar(255) description: text release_year: year language_id: tinyint unsigned original_language_id: tinyint unsigned rental_duration: tinyint unsigned rental_rate: decimal(4,2) length: smallint unsigned replacement_cost: decimal(5,2) rating: enum('g', 'pg', 'pg-13', 'r', 'nc-17') special_features: set('trailers', 'commentaries', 'deleted scenes', 'behind the scenes') last_update: timestamp film_id: smallint unsigned } class film_actor { last_update: timestamp actor_id: smallint unsigned film_id: smallint unsigned } class film_category { last_update: timestamp film_id: smallint unsigned category_id: tinyint unsigned } class film_text { title: varchar(255) description: text film_id: smallint } class inventory { film_id: smallint unsigned store_id: tinyint unsigned last_update: timestamp inventory_id: mediumint unsigned } class language { name: char(20) last_update: timestamp language_id: tinyint unsigned } class payment { customer_id: smallint unsigned staff_id: tinyint unsigned rental_id: int amount: decimal(5,2) payment_date: datetime last_update: timestamp payment_id: smallint unsigned } class pet { pet: varchar(150) name: varchar(150) owner: varchar(150) } class rental { rental_date: datetime inventory_id: mediumint unsigned customer_id: smallint unsigned return_date: datetime staff_id: tinyint unsigned last_update: timestamp rental_id: int } class sales_by_film_category { category: varchar(25) total_sales: decimal(27,2) } class sales_by_store { store: varchar(101) manager: varchar(91) total_sales: decimal(27,2) } class staff { first_name: varchar(45) last_name: varchar(45) address_id: smallint unsigned picture: blob email: varchar(50) store_id: tinyint unsigned active: tinyint(1) username: varchar(16) password: varchar(40) last_update: timestamp staff_id: tinyint unsigned } class staff_list { ID: tinyint unsigned name: varchar(91) address: varchar(50) zip code: varchar(10) phone: varchar(20) city: varchar(50) country: varchar(50) SID: tinyint unsigned } class store { manager_staff_id: tinyint unsigned address_id: smallint unsigned last_update: timestamp store_id: tinyint unsigned } address -[#595959,plain]-^ city : "city_id" city -[#595959,plain]-^ country : "country_id" customer -[#595959,plain]-^ address : "address_id" customer -[#595959,plain]-^ store : "store_id" film -[#595959,plain]-^ language : "language_id" film -[#595959,plain]-^ language : "original_language_id:language_id" film_actor -[#595959,plain]-^ actor : "actor_id" film_actor -[#595959,plain]-^ film : "film_id" film_category -[#595959,plain]-^ category : "category_id" film_category -[#595959,plain]-^ film : "film_id" inventory -[#595959,plain]-^ film : "film_id" inventory -[#595959,plain]-^ store : "store_id" payment -[#595959,plain]-^ customer : "customer_id" payment -[#595959,plain]-^ rental : "rental_id" payment -[#595959,plain]-^ staff : "staff_id" rental -[#595959,plain]-^ customer : "customer_id" rental -[#595959,plain]-^ inventory : "inventory_id" rental -[#595959,plain]-^ staff : "staff_id" staff -[#595959,plain]-^ address : "address_id" staff -[#595959,plain]-^ store : "store_id" store -[#595959,plain]-^ address : "address_id" store -[#595959,plain]-^ staff : "manager_staff_id:staff_id" @enduml
    • Graphviz DOT

      digraph "sakila" { splines = ortho; fontname = "Inconsolata"; node [colorscheme = ylgnbu4]; edge [colorscheme = dark28, dir = both]; actor [shape = record, label = "{ actor | first_name : varchar(45)\l last_name : varchar(45)\l last_update : timestamp\l| actor_id : smallint unsigned\l }"]; "actor_1 /* backup table */" [shape = record, label = "{ actor_1 /* backup table */ | actor_id : smallint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l last_update : timestamp\l column_nameimg : blob\l }"]; actor_info [shape = record, label = "{ actor_info | actor_id : smallint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l film_info : text\l }"]; address [shape = record, label = "{ address | address : varchar(50)\l address2 : varchar(50)\l district : varchar(20)\l city_id : smallint unsigned\l postal_code : varchar(10)\l phone : varchar(20)\l last_update : timestamp\l| address_id : smallint unsigned\l }"]; category [shape = record, label = "{ category | name : varchar(25)\l last_update : timestamp\l| category_id : tinyint unsigned\l }"]; city [shape = record, label = "{ city | city : varchar(50)\l country_id : smallint unsigned\l last_update : timestamp\l| city_id : smallint unsigned\l }"]; country [shape = record, label = "{ country | country : varchar(50)\l last_update : timestamp\l| country_id : smallint unsigned\l }"]; customer [shape = record, label = "{ customer | store_id : tinyint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l email : varchar(50)\l address_id : smallint unsigned\l active : tinyint(1)\l create_date : datetime\l last_update : timestamp\l| customer_id : smallint unsigned\l }"]; customer_list [shape = record, label = "{ customer_list | ID : smallint unsigned\l name : varchar(91)\l address : varchar(50)\l zip code : varchar(10)\l phone : varchar(20)\l city : varchar(50)\l country : varchar(50)\l notes : varchar(6)\l SID : tinyint unsigned\l }"]; film [shape = record, label = "{ film | title : varchar(255)\l description : text\l release_year : year\l language_id : tinyint unsigned\l original_language_id : tinyint unsigned\l rental_duration : tinyint unsigned\l rental_rate : decimal(4,2)\l length : smallint unsigned\l replacement_cost : decimal(5,2)\l rating : enum('g', 'pg', 'pg-13', 'r', 'nc-17')\l special_features : set('trailers', 'commentaries', 'deleted scenes', 'behind the scenes')\l last_update : timestamp\l| film_id : smallint unsigned\l }"]; film_actor [shape = record, label = "{ film_actor | last_update : timestamp\l| actor_id : smallint unsigned\l film_id : smallint unsigned\l }"]; film_category [shape = record, label = "{ film_category | last_update : timestamp\l| film_id : smallint unsigned\l category_id : tinyint unsigned\l }"]; film_text [shape = record, label = "{ film_text | title : varchar(255)\l description : text\l| film_id : smallint\l }"]; inventory [shape = record, label = "{ inventory | film_id : smallint unsigned\l store_id : tinyint unsigned\l last_update : timestamp\l| inventory_id : mediumint unsigned\l }"]; language [shape = record, label = "{ language | name : char(20)\l last_update : timestamp\l| language_id : tinyint unsigned\l }"]; payment [shape = record, label = "{ payment | customer_id : smallint unsigned\l staff_id : tinyint unsigned\l rental_id : int\l amount : decimal(5,2)\l payment_date : datetime\l last_update : timestamp\l| payment_id : smallint unsigned\l }"]; pet [shape = record, label = "{ pet | pet : varchar(150)\l name : varchar(150)\l owner : varchar(150)\l }"]; rental [shape = record, label = "{ rental | rental_date : datetime\l inventory_id : mediumint unsigned\l customer_id : smallint unsigned\l return_date : datetime\l staff_id : tinyint unsigned\l last_update : timestamp\l| rental_id : int\l }"]; sales_by_film_category [shape = record, label = "{ sales_by_film_category | category : varchar(25)\l total_sales : decimal(27,2)\l }"]; sales_by_store [shape = record, label = "{ sales_by_store | store : varchar(101)\l manager : varchar(91)\l total_sales : decimal(27,2)\l }"]; staff [shape = record, label = "{ staff | first_name : varchar(45)\l last_name : varchar(45)\l address_id : smallint unsigned\l picture : blob\l email : varchar(50)\l store_id : tinyint unsigned\l active : tinyint(1)\l username : varchar(16)\l password : varchar(40)\l last_update : timestamp\l| staff_id : tinyint unsigned\l }"]; staff_list [shape = record, label = "{ staff_list | ID : tinyint unsigned\l name : varchar(91)\l address : varchar(50)\l zip code : varchar(10)\l phone : varchar(20)\l city : varchar(50)\l country : varchar(50)\l SID : tinyint unsigned\l }"]; store [shape = record, label = "{ store | manager_staff_id : tinyint unsigned\l address_id : smallint unsigned\l last_update : timestamp\l| store_id : tinyint unsigned\l }"]; address -> city [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "city_id", headlabel = ""]; city -> country [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "country_id", headlabel = ""]; customer -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; customer -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; film -> language [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "language_id", headlabel = ""]; film -> language [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "original_language_id:language_id", headlabel = ""]; film_actor -> actor [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "actor_id", headlabel = ""]; film_actor -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; film_category -> category [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "category_id", headlabel = ""]; film_category -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; inventory -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; inventory -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; payment -> customer [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "customer_id", headlabel = ""]; payment -> rental [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "rental_id", headlabel = ""]; payment -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "staff_id", headlabel = ""]; rental -> customer [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "customer_id", headlabel = ""]; rental -> inventory [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "inventory_id", headlabel = ""]; rental -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "staff_id", headlabel = ""]; staff -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; staff -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; store -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; store -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "manager_staff_id:staff_id", headlabel = ""]; }
    • Graphviz DOT とポジション

      digraph "sakila" { splines = ortho; fontname = "Inconsolata"; node [colorscheme = ylgnbu4]; edge [colorscheme = dark28, dir = both]; actor [shape = record, pos = "4.333,20.917!" , label = "{ actor | first_name : varchar(45)\l last_name : varchar(45)\l last_update : timestamp\l| actor_id : smallint unsigned\l }"]; "actor_1 /* backup table */" [shape = record, pos = "-4.111,4.681!" , label = "{ actor_1 /* backup table */ | actor_id : smallint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l last_update : timestamp\l column_nameimg : blob\l }"]; actor_info [shape = record, pos = "-0.611,4.681!" , label = "{ actor_info | actor_id : smallint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l film_info : text\l }"]; address [shape = record, pos = "-2.564,26.375!" , label = "{ address | address : varchar(50)\l address2 : varchar(50)\l district : varchar(20)\l city_id : smallint unsigned\l postal_code : varchar(10)\l phone : varchar(20)\l last_update : timestamp\l| address_id : smallint unsigned\l }"]; category [shape = record, pos = "15.972,20.750!" , label = "{ category | name : varchar(25)\l last_update : timestamp\l| category_id : tinyint unsigned\l }"]; city [shape = record, pos = "-2.550,28.972!" , label = "{ city | city : varchar(50)\l country_id : smallint unsigned\l last_update : timestamp\l| city_id : smallint unsigned\l }"]; country [shape = record, pos = "-2.550,31.236!" , label = "{ country | country : varchar(50)\l last_update : timestamp\l| country_id : smallint unsigned\l }"]; customer [shape = record, pos = "-0.681,16.458!" , label = "{ customer | store_id : tinyint unsigned\l first_name : varchar(45)\l last_name : varchar(45)\l email : varchar(50)\l address_id : smallint unsigned\l active : tinyint(1)\l create_date : datetime\l last_update : timestamp\l| customer_id : smallint unsigned\l }"]; customer_list [shape = record, pos = "19.694,31.236!" , label = "{ customer_list | ID : smallint unsigned\l name : varchar(91)\l address : varchar(50)\l zip code : varchar(10)\l phone : varchar(20)\l city : varchar(50)\l country : varchar(50)\l notes : varchar(6)\l SID : tinyint unsigned\l }"]; film [shape = record, pos = "7.486,22.417!" , label = "{ film | title : varchar(255)\l description : text\l release_year : year\l language_id : tinyint unsigned\l original_language_id : tinyint unsigned\l rental_duration : tinyint unsigned\l rental_rate : decimal(4,2)\l length : smallint unsigned\l replacement_cost : decimal(5,2)\l rating : enum('g', 'pg', 'pg-13', 'r', 'nc-17')\l special_features : set('trailers', 'commentaries', 'deleted scenes', 'behind the scenes')\l last_update : timestamp\l| film_id : smallint unsigned\l }"]; film_actor [shape = record, pos = "9.174,15.458!" , label = "{ film_actor | last_update : timestamp\l| actor_id : smallint unsigned\l film_id : smallint unsigned\l }"]; film_category [shape = record, pos = "14.592,15.458!" , label = "{ film_category | last_update : timestamp\l| film_id : smallint unsigned\l category_id : tinyint unsigned\l }"]; film_text [shape = record, pos = "2.889,4.681!" , label = "{ film_text | title : varchar(255)\l description : text\l| film_id : smallint\l }"]; inventory [shape = record, pos = "2.889,15.625!" , label = "{ inventory | film_id : smallint unsigned\l store_id : tinyint unsigned\l last_update : timestamp\l| inventory_id : mediumint unsigned\l }"]; language [shape = record, pos = "10.731,25.542!" , label = "{ language | name : char(20)\l last_update : timestamp\l| language_id : tinyint unsigned\l }"]; payment [shape = record, pos = "-1.459,8.208!" , label = "{ payment | customer_id : smallint unsigned\l staff_id : tinyint unsigned\l rental_id : int\l amount : decimal(5,2)\l payment_date : datetime\l last_update : timestamp\l| payment_id : smallint unsigned\l }"]; pet [shape = record, pos = "9.028,4.681!" , label = "{ pet | pet : varchar(150)\l name : varchar(150)\l owner : varchar(150)\l }"]; rental [shape = record, pos = "1.321,11.833!" , label = "{ rental | rental_date : datetime\l inventory_id : mediumint unsigned\l customer_id : smallint unsigned\l return_date : datetime\l staff_id : tinyint unsigned\l last_update : timestamp\l| rental_id : int\l }"]; sales_by_film_category [shape = record, pos = "11.917,4.681!" , label = "{ sales_by_film_category | category : varchar(25)\l total_sales : decimal(27,2)\l }"]; sales_by_store [shape = record, pos = "5.583,4.681!" , label = "{ sales_by_store | store : varchar(101)\l manager : varchar(91)\l total_sales : decimal(27,2)\l }"]; staff [shape = record, pos = "-4.111,16.792!" , label = "{ staff | first_name : varchar(45)\l last_name : varchar(45)\l address_id : smallint unsigned\l picture : blob\l email : varchar(50)\l store_id : tinyint unsigned\l active : tinyint(1)\l username : varchar(16)\l password : varchar(40)\l last_update : timestamp\l| staff_id : tinyint unsigned\l }"]; staff_list [shape = record, pos = "22.666,31.236!" , label = "{ staff_list | ID : tinyint unsigned\l name : varchar(91)\l address : varchar(50)\l zip code : varchar(10)\l phone : varchar(20)\l city : varchar(50)\l country : varchar(50)\l SID : tinyint unsigned\l }"]; store [shape = record, pos = "-2.638,20.917!" , label = "{ store | manager_staff_id : tinyint unsigned\l address_id : smallint unsigned\l last_update : timestamp\l| store_id : tinyint unsigned\l }"]; address -> city [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "city_id", headlabel = ""]; city -> country [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "country_id", headlabel = ""]; customer -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; customer -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; film -> language [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "language_id", headlabel = ""]; film -> language [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "original_language_id:language_id", headlabel = ""]; film_actor -> actor [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "actor_id", headlabel = ""]; film_actor -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; film_category -> category [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "category_id", headlabel = ""]; film_category -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; inventory -> film [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "film_id", headlabel = ""]; inventory -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; payment -> customer [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "customer_id", headlabel = ""]; payment -> rental [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "rental_id", headlabel = ""]; payment -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "staff_id", headlabel = ""]; rental -> customer [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "customer_id", headlabel = ""]; rental -> inventory [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "inventory_id", headlabel = ""]; rental -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "staff_id", headlabel = ""]; staff -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; staff -> store [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "store_id", headlabel = ""]; store -> address [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "address_id", headlabel = ""]; store -> staff [color = "#595959", style = solid , arrowtail = none , arrowhead = normal , taillabel = "", label = "manager_staff_id:staff_id", headlabel = ""]; }
    Copy diagrams to clipboard via context menu

ダイアグラムをファイルにエクスポートする

  • ダイアグラムをファイルにエクスポートするには、ダイアグラムを右クリックし、ダイアグラムのエクスポート | ファイルへエクスポートに移動して、形式を選択します。

    または、ダイアグラムツールバーのダイアグラムのエクスポートボタン (Export Diagram icon) をクリックし、対応するサブメニューで形式を選択します。

    サポートされている形式は次のとおりです。

    • YEd .graphml

    • JGraph .drawio

    • Graphviz .dot

    • Graphviz .dot とポジション

    • Mermaid .md

    • PlantUML

    • IDEA .uml : UML 形式

      PyCharm のみがサポートする内部形式です。保存したダイアグラムを開くには、UML ファイルをエディターにドラッグします。

    Export diagrams to files via context menu

ダイアグラムを PNG 形式のイメージとしてエクスポート

  • ダイアグラムを PNG 形式のイメージとしてエクスポートするには、ダイアグラムを右クリックしてダイアグラムのエクスポート | 画像にエクスポートを選択します。

    または、ダイアグラムツールバーのダイアグラムのエクスポートボタン (Export Diagram icon) をクリックし、画像にエクスポートを選択します。

リファレンス

アイコン

ダイアグラム内の列の可能なアイコンの組み合わせは次のとおりです。

アイコン

外部キー

主キー

インデックス付き

非 null

Column

Column with a foreign key

Has a foreign key

Column with a primary key

Has a primary key

Indexed column

Indexed

Column that does not accept NULL values

Has the NOT NULL constraint

Indexed column that does not accept NULL values

Indexed

Has the NOT NULL constraint

Indexed column with primary and foreign keys that does not accept NULL values

Has a foreign key

Has a primary key

Indexed

Has the NOT NULL constraint

Indexed column with primary and foreign keys

Has a foreign key

Has a primary key

Indexed

Column with primary and foreign keys that does not accept NULL values

Has a foreign key

Has a primary key

Has the NOT NULL constraint

Column with primary and foreign keys

Has a foreign key

Has a primary key

Indexed column with a foreign key that does not accept NULL values

Has a foreign key

Indexed

Has the NOT NULL constraint

Column with a foreign key that does not accept NULL values

Has a foreign key

Has the NOT NULL constraint

Indexed column with a foreign key that accepts NULL values

Has a foreign key

Indexed

Indexed column with a primary key that does not accept NULL values

Has a primary key

Indexed

Has the NOT NULL constraint

Column with a primary key that does not accept NULL values

Has a primary key

Has the NOT NULL constraint

Indexed column with a primary key

Has a primary key

Indexed

ダイアグラムの構成設定

ダイアグラムのデフォルトの表示設定とレイアウトを構成するには、Ctrl+Alt+S を押して設定を開き、ツール | ダイアグラムに移動します。

データベースダイアグラムの構成設定の詳細については、ダイアグラムリファレンストピックを参照してください。

the Diagrams menu

ツールバーとコンテキストメニュー

ダイアグラムエディターのツールバーを使用してアクションにすばやくアクセスし、コンテキストメニューを使用して表示されたダイアグラムを管理します。

ツールバー

項目

説明

the Key Columns button

(データベースを操作する場合に使用できます。) このボタンをクリックすると、ダイアグラムに主キー列が表示されます。

The Columns button

(データベースを操作するときに使用できます。) 次の表示を切り替えます。

  • データベースオブジェクトの視覚化の場合: ダイアグラムの主キー列以外の列を表示または非表示にします。

  • クエリマップの場合: クエリ属性を表示または非表示にします。これらの属性には、行数、インデックス名、クエリに関するその他の追加情報を指定できます。

The Virtual foreign keys button

(データベースを操作する場合に使用できます。) このボタンをクリックして、ダイアグラム内の仮想外部キーを表示または非表示にします。

The Comments button

(データベースを操作する場合に使用できます。) このボタンをクリックして、ダイアグラム内のコメントを表示または非表示にします。

Zoom In

このアイコンをクリックすると、ダイアグラムの縮尺が拡大されます。あるいは、NumPad+ を押します。

Zoom Out

このアイコンをクリックすると、ダイアグラムの縮尺が縮小されます。あるいは、NumPad- を押します。

Actual Size

このアイコンをクリックすると、ダイアグラムの実際のサイズに戻ります。

Fit Content

このアイコンをクリックして、内容を現在のダイアグラムのサイズに合わせます。

Apply Current Layout

このアイコンをクリックして、ダイアグラムのコンテキストメニューのレイアウトノードから選択した現在のレイアウトを適用します。

Route Edges

このアイコンをクリックして、ダイアグラムをウィンドウの端に合わせて拡大縮小します。

Copy Diagram to Clipboard

このアイコンをクリックして、ダイアグラムをクリップボードにコピーします。

Copy Selection to Clipboard

このアイコンをクリックし、マウスでダイアグラムの領域を選択します。選択した領域がクリップボードにコピーされます。

Save image

このアイコンをクリックすると、現在のダイアグラムが PNG 形式でエクスポートされます。

Print

このアイコンをクリックしてダイアグラムを印刷します。

コンテキストメニュー

以下の表には、ツールバーからは利用できないコマンドが含まれています。

項目

説明

選択した要素のアクション

このオプションを使用して、ダイアグラム内の選択した要素に適用されるアクションのリストを開きます。アクションを選択して、要素のコピー、そのソースへの移動、その使用箇所の検索、移動アクションやさまざまな Git アクションの使用などを行うことができます。

コンテンツ

このオプションを使用して、新しい要素の追加、依存関係の表示、ダイアグラム内の要素の並べ替えなどに役立つアクションのリストを開きます。

  • 新規Alt+Insert):

    新しいノード要素またはメンバーを作成するには、このコマンドを選択します。

  • カテゴリの表示 : このコマンドを選択して、選択したコード要素をクラスノードに表示します。例: フィールドを選択して、クラス内のすべてのフィールド要素を表示できます。

削除

選択したダイアグラムを削除します。

グラフの分析

このノードを使用して、ダイアグラムを分析するコマンドの 1 つを選択します。グラフの特性を確認したり、グラフの焦点を変更したり、グラフの中心性を測定したりすることができます。

レイアウト

サブメニューから目的のダイアグラムレイアウトを選択します。

方向

次の方向オプションを提供します: 下から上、上から下など。

現在のレイアウトを適用

ダイアグラムのコンテキストメニューのレイアウトノードから選択された現在のレイアウトを適用します

ルートエッジ

ダイアグラムのコンテンツをダイアグラムウィンドウの端に合わせて拡大縮小します。

外観

グリッド、エッジラベル、ブリッジを表示することにより、ダイアグラムの表示方法を管理します。エッジをマージしてエッジ形状を選択できます。

振る舞い

このオプションを使用して、グリッドに対する要素の整列、選択したノードの構造ビューの表示、レイアウト後のコンテンツのフィッティングなど、ダイアグラムの動作に関連するコマンドを選択します。

ダイアグラムのエクスポート

次のオプションを選択して構成できます。

  • Copy Diagram to Clipboard ダイアグラムをクリップボードにコピー : このアイコンをクリックすると、ダイアグラムがクリップボードにコピーされます。

  • Copy Selection to Clipboard 選択範囲をクリップボードにコピー : このアイコンをクリックし、マウスで任意のダイアグラムの領域を選択します。選択した領域がクリップボードにコピーされます。

  • Export to Image 画像にエクスポート : このオプションをクリックして、ダイアグラムをイメージとして保存します。

  • Print 印刷 : このオプションをクリックして、ダイアグラムを印刷します。

関連ページ:

主キー

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

外部キー

外部キー関係は、テーブル同士の関係を指定し、テーブル間の関係を示します。PyCharm は、データベーススキーマ内の外部キー関係を認識し、それを使用して句を構築します。これらの関係は、自動補完リスト、データナビゲーション、およびダイアグラムで確認できます。PyCharm では、明示的な外部キーを使用するか、仮想外部キーを作成できます。外部キー () は、データベースツールウィンドウにあります。他のノードおよびオブジェクトアイコンのリファレンスについては、データベースツールウィンドウトピックのデー...

クエリ実行計画

コマンドは、ステートメントの実行計画を表示します。これは、プランナーがステートメントを実行するためにとったアプローチの詳細を確認できることを意味します。例: テーブルのスキャン方法、必要な行を結合するために使用される結合アルゴリズム、ステートメントの実行コスト、その他の情報。実行コストは、ステートメントの実行にかかる時間に対するプランナーの推測です。測定は、相対コスト単位で行われます。実行コストには、起動と合計の 2 つのオプションがあります。開始コストは、最初の行が処理されるまでにかかる時間を...

ダイアグラム

ダイアグラムメニューでは、ダイアグラムのデフォルトの表示設定とレイアウトを構成できます。コンテンツペイン:ダイアグラムに表示される要素の横にあるチェックボックスを選択します。差分の表示詳細このチェックボックスが選択されている場合、指定されたすべての要素の詳細がリビジョンの UML クラスダイアグラムに表示されます。このチェックボックスが選択されていない場合、ノード要素のみがダイアグラムに含まれます。DB ダイアグラムキー列ダイアグラムが表示されたときに表示される主キー列は、このチェックボックス...

DDL 定義を操作する

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

クエリを実行する

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