テーブル関連機能
作成済みのテーブルとメモに対する操作(選択、移動、コピー、色の指定、各テーブルに表示する内容の設定)と、その周辺のキャンバス操作をまとめています。
前半はテーブルとメモの操作、続いてテーブルのプロパティ、テーブルへのフォーカス、インデックス、自動レイアウト、データベースベンダー、最後にキャンバス自体のキャンバスツールバー、拡大・縮小、移動、Diff Viewer を扱います。
複数選択
次の 3 つの方法に対応しています。
Ctrl + drag(Windows/Linux) or⌘ + drag(Mac)Ctrl + click(Windows/Linux) or⌘ + click(Mac)Ctrl + AorCtrl + Alt + A(Windows/Linux)、⌘ + Aor⌘ + ⌥ + A(Mac)
メモも同じ方法で選択でき、どちらの全選択ショートカットもすべてのテーブルとメモを一度に選択します。
Ctrl + A はキャレットに譲るため、セルの編集中はダイアグラムではなくテキストを選択します。
対象は、選択範囲が端に触れただけでは選択されず、中心を覆ったときに選択されます。

共同編集中は、各参加者の選択、フォーカスしているセル、選択範囲が参加者ごとの色でキャンバスに描画されます。共同編集を参照してください。
複数テーブルの移動
すでに選択に含まれているテーブルやメモをドラッグすると、修飾キーなしで選択全体が一緒に移動します。
選択の外にある対象をドラッグすると、選択がその対象に置き換わり、それだけが移動します。mod キーを押しながらドラッグすれば、どちらの場合も選択は維持されます。Ctrl + drag (Windows/Linux) または ⌘ + drag (Mac)

テーブルとメモのコピー / 貼り付け
選択しているテーブルとメモをコピーし、新しいテーブルとメモとして貼り付けます。
ショートカット: Ctrl + C (Windows/Linux) または ⌘ + C (Mac)、Ctrl + V (Windows/Linux) または ⌘ + V (Mac)
コピーしたテーブルは名前、コメント、カラム、色を保持し、コピーしたメモは本文、サイズ、色を保持します。コピーは元の名前をそのまま引き継ぎます。
インデックスとリレーションシップも一緒にコピーされます。インデックスはコピーしたテーブルへ丸ごとコピーされ、リレーションシップは両端のテーブルがどちらもコピー対象に含まれているときにコピーされます。片側だけのリレーションシップは、元のテーブルを指したまま残るのではなく破棄されます。
貼り付けたコピーが新しい選択になり、同じコピーを繰り返し貼り付けると毎回 50px ずつずれるため、重なって積み上がることはありません。

フォーカスしているテーブル内でカラムを選択している場合は、同じショートカットでそのカラムがコピーされます。テーブルの編集を参照してください。
テーブルとメモの複製
Alt を押しながら、テーブルやメモをマウスの左ボタンでドラッグします。
半透明のプレビューがポインタに追従し、ボタンを離すとプレビューの位置にコピーが配置されます。
つかんだ対象がすでに選択に含まれている場合は、選択全体が複製されます。含まれていない場合は、ポインタの下の対象が新しい選択になります。
動かさずに Alt + click すると、コピーは右下に 50px ずれた位置に配置され、その位置がすでに埋まっている場合はさらにずれた位置に配置されます。
複製が引き継ぐ内容は貼り付けと同じで、名前、コメント、カラム、色、メモのサイズに加えて、コピー対象の中で完結するインデックスとリレーションシップも引き継ぎます。

テーブルとメモの削除
現在選択しているテーブルやメモを削除します。
ショートカット: Ctrl + Backspace (Windows/Linux) または Ctrl + Delete (Windows/Linux) または ⌘ + Backspace (Mac) または ⌘ + Delete (Mac)

テーブルとメモの色指定
カテゴリごとに区別できるよう、色を指定できます。
テーブルは左端に沿って、メモは上部に沿って色が付きます。その左端または色帯をクリックすると、カラーピッカーが開きます。色はクリックしたものだけでなく、選択しているすべてのテーブルとメモに適用されます。

テーブルの表示オプション
次の表示オプションを提供します。
- Table Comment
- Column Comment
- DataType
- Default
- Not Null
- Unique
- Auto Increment
- Relationship

Visualization タブの Flow モードのカードは、これらのオプションに従いません。カードは独自の行の表示を使い、Relationship がオフでもコネクタを描画します。
テーブルのプロパティ
選択したテーブルのプロパティパネルを開きます。
テーブルのコンテキストメニュー、またはショートカット Alt + Space で開きます。
Indexes、Schema SQL、Code Generator の 3 つのタブがあります。
パネルの上部には最近開いた 5 つのテーブルが残るため、開き直さずにテーブル間を移動できます。
テーブルへのフォーカス
Visualization タブを Flow モードで開き、選んだテーブルと、そこからリレーションシップ 1 つでつながるすべてのテーブルに絞り込んで表示します。
テーブルのコンテキストメニューの Focus on this table から開くか、1 つ以上のテーブルを選択して Alt + F を押します。
右クリックしたテーブルが複数選択しているテーブルの 1 つである場合、項目は Focus on selected tables と表示され、選択全体にフォーカスします。選択の外にあるテーブルを右クリックした場合は、そのテーブルだけにフォーカスします。
ショートカットは選択しているテーブルを対象とし、メモは除外します。テーブルを選択していない場合は何もしません。
絞り込んだビューの表示内容と、ダイアグラム全体に戻る方法については、可視化を参照してください。
インデックス
インデックスはテーブルのプロパティパネルの Indexes タブで定義し、書き出す Schema SQL に含まれます。
左側にはテーブルのインデックスが一覧表示されます。+ で追加します。
各インデックスには、ユニークにする UQ トグル、名前の入力欄、削除する x があります。
右側にはテーブルのカラムがチェックボックス付きで一覧表示されます。左側でインデックスを選択するまでは編集できません。
カラムをチェックすると選択中のインデックスに追加され、チェックを外すと削除されます。
選択中のインデックスのカラムは下部に一覧表示されます。グリップハンドルでドラッグすると並べ替えられ、行の ASC または DESC をクリックすると並び順が切り替わります。

自動レイアウト
すべてのテーブルをキャンバス上に配置します。
キャンバスのコンテキストメニューまたはクイック検索から Auto Layout を開き、4 つのレイアウトから 1 つを選びます。
| レイアウト | 何を描くか |
|---|---|
Force | シミュレーションです。リレーションシップがテーブルを引き寄せ、隣り合うテーブルは互いに押し離し、重なったテーブルは離れます。 |
Flow | リレーションシップに沿って左から右へ流れます。コネクタごとにテーブルへ接する位置を分けます。線の交差を少なくしようとしますが、ほかのレイアウトなら避けられる交差が残ることもあります。 |
Tree - vertical | 上から下へ階層に並べます。親テーブルが、それを指す外部キーを持つテーブルの上に置かれます。 |
Tree - horizontal | 同じ階層構造を、左から右へ並べます。 |
Force は配置が落ち着くまでプレビューを開き、表示される通知に Apply と Cancel があります。
プレビューの表示範囲は配置を始めた時点のダイアグラムに合わせられるため、配置が落ち着くまでの間にテーブルが枠の外へ出ることがあります。プレビューは 70% 以下で描画されるため、テーブルは名前と色の付いた端だけの表示になります。
Apply を押すと、その時点の位置で確定します。押さない場合も、静止した時点で配置は自動的に適用されます。Cancel または Escape ではダイアグラムは元のままです。
残りの 3 つはメインスレッドの外で一度に計算されるため、見守るものはありません。計算の間は通知が表示され、できあがった配置はダイアグラムがすでに占めている範囲の中央に置かれます。Cancel または Escape は、もう待っていないレイアウトを破棄します。Shared Worker を動かさないホストでは Could not place tables で終わります。Web Worker を参照してください。60 秒以内に結果が返ってこないレイアウトも、同じように終わります。
どれを選んでも動くのはテーブルだけで、メモはその場に残ります。自分自身を指すリレーションシップは無視し、同じ 2 つのテーブルの間に複数あっても 1 つとして数えます。
結果は 1 件の履歴として記録されるため、1 回の Undo ですべてのテーブルが元の位置に戻ります。

データベース
対応しているデータベースは次のとおりです。
- Databricks
- MSSQL
- MariaDB
- MySQL
- Oracle
- PostgreSQL
- Snowflake
- SQLite
この設定は、書き出す Schema SQL の構文、DataType の自動補完、生成されるコードや読み込んだスキーマで解決される型を決定します。
TIMESTAMP WITH TIME ZONE や INTERVAL DAY TO SECOND のような複数語の型名は、Schema SQL の読み込み時に引数リストを含めてそのまま保持されます。


キャンバスツールバー
キャンバスの下端の中央には小さなツールバーが浮いていて、キャンバス自体に対する道具がまとまっています。
- ハンドとポインタ。既定はポインタで、ハンドにすると空いている場所だけでなくテーブルの上でもドラッグが表示位置の移動になります。
Spaceで切り替えます。 - 拡大・縮小。
Zoom out、パーセントで示した現在の拡大・縮小のレベル、Zoom inが並びます。2 つのボタンは、拡大・縮小のショートカットと同じように段階的に拡大・縮小し、パーセント表示をクリックすると100%に戻ります。 - 4 種類のリレーションシップ記法。リレーションシップを開始するときのものと同じです。編集の開始を参照してください。リレーションシップはテーブルを 2 つクリックして描くため、記法を選ぶと道具はポインタに戻ります。
- Zen モード
Alt + Z。キャンバスとこのツールバーだけを残して、ほかをすべて隠します。もう一度Alt + Zを押すか、ボタンを押すと元に戻ります。 Go to contentコンパス。テーブルもメモも画面にない間だけ、ツールバーの末尾に加わります。キャンバスの移動を参照してください。
ショートカットのあるボタンは、ツールチップにそのショートカットを表示します。
Force の自動レイアウトのプレビュー、テーブルのプロパティ、Time Travel、Diff Viewer のいずれかが開いている間はツールバーが退き、閉じると再び表示されます。

拡大・縮小
mod キーを押しながらマウスホイールで拡大・縮小します。Ctrl + Wheel (Windows/Linux) または ⌘ + Wheel (Mac)。ホイールだけを回すとキャンバスの表示位置が移動します。
トラックパッドのピンチでも、ピンチした位置を中心に拡大・縮小します。タッチスクリーンでは 2 本の指でも拡大・縮小でき、指を動かすと表示位置も移動します。
ショートカット: Ctrl + Plus (Windows/Linux) または ⌘ + Plus (Mac)、Ctrl + Minus (Windows/Linux) または ⌘ + Minus (Mac)
Ctrl + 0 (Windows/Linux) または ⌘ + 0 (Mac) は、画面の中心を保ったまま 100% に戻します。
キャンバスツールバーの Zoom out と Zoom in のボタンは、Minus と Plus のショートカットと同じように拡大・縮小します。1 回押すごとに、画面の中心を保ったまま 4 パーセントポイントずつ変わります。2 つのボタンの間のパーセント表示は現在の拡大・縮小のレベルを示し、クリックすると Ctrl + 0 (Windows/Linux) または ⌘ + 0 (Mac) と同じように 100% に直接戻ります。
拡大・縮小のレベルは 10% から 150% までです。
70% 以下ではテーブルが名前と色の付いた端だけの表示になり、拡大するまではセルの編集、セルのショートカット、コピーと貼り付けは動作しません。
同じ 3 つのショートカットは Visualization タブでも、Graph モードと Flow モードのどちらでも、それぞれのモードの範囲内で拡大・縮小します。可視化を参照してください。

キャンバスの移動
キャンバスに端はなく、設定するサイズもありません。テーブルとメモは置いた場所にそのままあり、以下のものはすべて固定の紙面ではなくダイアグラム自体を基準にしています。
キャンバスの空いている場所をドラッグすると表示位置が移動します。Space でハンドツールに切り替えれば、テーブルの上を含めてどこからでもドラッグできます。ホイールでも移動でき、Shift + Wheel は左右に移動します。
移動できる範囲に制限はありません。ホイール、ドラッグ、ハンドツールのいずれでも、動かした分だけ表示位置が移動し、どの方向でもテーブルの先まで進みます。
右上のミニマップは、ダイアグラムの四方に画面 1 つ分の余地、つまりスクロールバーが届く範囲を加え、粗いグリッドに合わせて外側へ広げた範囲を表示するため、縮小するほどミニマップの中のダイアグラムは小さくなります。クリックするとその位置へ表示が移動し、表示範囲の枠をドラッグすると表示位置が移動します。縮小するほど、表示範囲の枠はミニマップのより広い部分を覆うように大きくなります。
右端と下端のスクロールバーも同じ範囲を表します。この範囲はダイアグラムが画面の片側のすぐ外にある位置から反対側のすぐ外にある位置までなので、描画されているダイアグラムより少なくとも画面 1 つ分長く、表示位置がダイアグラムの先にある間はさらに長くなります。Zen モード以外では、テーブルかメモが 1 つでもあれば、すべてが画面に収まっていても両方のスクロールバーが表示され、空のドキュメントでだけスクロールバーもミニマップも表示されません。
スクロールバーのつまみやミニマップの表示範囲の枠をドラッグする移動だけは、止まる位置があります。テーブルが画面のすぐ外に出る位置までしか進まず、ドラッグを始めた位置がそれより外側だった場合は、その位置までしか進みません。
移動した結果、テーブルもメモも画面に残らなくなると、キャンバスツールバーの末尾に Go to content コンパスが加わり、最も近い対象を指す矢印とその距離を表示します。クリックすると、拡大・縮小のレベルを変えずにその対象が画面の中央に来ます。

Diff Viewer
以前に保存したドキュメントと現在のドキュメントを比較できます。
キャンバスのコンテキストメニューから Diff Viewer を選び、以前に書き出した .json のドキュメントを選択します。
ビューはキャンバスの上に開き、左に変更点、その隣に保存したドキュメントと現在のドキュメントが並びます。
テーブルとカラムは名前で対応付けられます。2 つのドキュメントで値が異なるセルは両側で色が付き、保存したドキュメントでは赤、現在のドキュメントでは緑になるため、片側にしかないテーブルやカラムは全体に色が付きます。
どちらの側も、ホイールまたは空いている場所のドラッグで表示位置が移動し、Ctrl + Wheel (Windows/Linux)、⌘ + Wheel (Mac)、またはピンチで拡大・縮小します。70% 以下ではキャンバスと同じようにテーブルが折りたたまれ、色付けは表示されません。
両側とも読み取り専用のため、ドキュメントが変更されることはありません。ビューは、開くときに表示される通知の Close ボタン、または Escape で閉じます。
