表相关功能
表与备注创建之后的所有操作,包括选中、移动、复制、着色,以及设置每个表显示哪些内容,还包括围绕它们的画布控制。
先是表与备注的相关命令,然后是表属性、聚焦于表、索引、自动布局和数据库厂商,最后是画布本身:画布工具栏、缩放、平移和 Diff Viewer。
多选
支持以下三种方式:
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 会让位于光标,因此在编辑单元格时它选中的是文本而不是图。
选择框覆盖到对象的中心时才会将其选中,仅接触边缘不会选中。

在协同编辑的会话中,每位参与者的选中状态、获得焦点的单元格和选择框都会以该参与者的颜色绘制在画布上。参见协同编辑。
移动多个表
拖动已经处于选中范围内的表或备注时,无需任何修饰键,整个选中范围都会一起移动。
拖动选中范围之外的对象时,选中状态会收缩到该对象上,只移动它。无论哪种情况,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 三个标签页。
面板顶部会保留最近打开的五个表,因此无需重新打开即可在它们之间切换。
聚焦于表
以 Flow 模式打开 Visualization 标签页,范围缩小到所选的表以及与它们相隔一条关系的所有表。
通过表的右键菜单中的 Focus on this table 打开,或者选中一个或多个表后按 Alt + F。
当你右键点击的表是多个选中表中的一个时,该条目会显示为 Focus on selected tables,并聚焦整个选中范围。在选中范围之外的表上右键,则只聚焦该表。
快捷键作用于选中的表,不包括备注,没有选中任何表时不起作用。
缩小后的视图显示哪些内容,以及如何回到整张图,参见可视化。
索引
索引在表属性面板的 Indexes 标签页中定义,并会包含在导出的 Schema SQL 中。
左侧列出表上的索引,通过 + 添加。
每个索引都有一个用于设为唯一的 UQ 开关、一个名称输入框,以及一个用于删除的 x。
右侧列出表的列,每列各有一个复选框。在左侧选中索引之前,右侧不可编辑。
勾选某一列会将其添加到选中的索引中,取消勾选则将其移除。
选中索引所包含的列显示在下方。通过拖动手柄可以调整它们的顺序,点击某一行的 ASC 或 DESC 标记可以切换排序方向。

自动布局
替你把所有表排布到画布上。
在画布的右键菜单或快速搜索中打开 Auto Layout,然后从四种布局中选择一种:
| 布局 | 画出的样子 |
|---|---|
Force | 一次模拟:关系把表拉到一起,相邻的表相互推开,重叠的表被分开。 |
Flow | 沿着关系从左到右流动,每条连线在表上都有各自的接点。它会尽量减少线条交叉,但也可能留下换一种布局就能避免的交叉。 |
Tree - vertical | 自上而下分层:父表位于持有指向它的外键的表之上。 |
Tree - horizontal | 同样的分层,改为从左到右。 |
Force 会在排列稳定之前打开预览,提示信息上提供 Apply 和 Cancel。
预览的取景以布局开始时的图为准,因此在排列稳定的过程中,表可能会移出取景范围。预览以 70% 或更低的缩放绘制,因此表会折叠为名称和颜色边缘。
Apply 会保留当前时刻的位置。排列自行稳定后,布局也会自动应用。Cancel 或 Escape 则保持图不变。
其余三种在主线程之外一次算完,没有过程可看:计算期间会显示一条提示,算好的布局会落在图形已经占据的区域中央。Cancel 或 Escape 会丢弃你不再等待的布局;不运行 shared worker 的宿主环境则会以 Could not place tables 收场,参见 Web Worker。60 秒内仍未返回的布局也会以同样的方式收场。
无论选择哪一种,移动的都只有表,备注留在原处。指向自身的关系会被忽略,同两个表之间的多条关系只算一条。
结果只会记录为一条历史记录,因此一次 Undo 就能把所有表恢复原位。

数据库
支持的数据库如下:
- Databricks
- MSSQL
- MariaDB
- MySQL
- Oracle
- PostgreSQL
- Snowflake
- SQLite
该选项决定导出 Schema SQL 的语法、DataType 的自动补全,以及生成的代码和导入的 schema 所解析出的类型。
导入 Schema SQL 时,TIMESTAMP WITH TIME ZONE 和 INTERVAL DAY TO SECOND 这类由多个单词组成的类型名会被完整保留,包括参数列表。


画布工具栏
画布底部边缘的中间浮着一个小工具栏,集中放置作用于画布本身的工具:
- 抓手与指针。默认是指针;切换到抓手后,无论在空白处还是在表的上方,拖动都会变成平移视图。用
Space在两者之间切换。 - 缩放:
Zoom out、以百分比显示的当前缩放级别,以及Zoom in。这两个按钮与缩放快捷键一样逐级调整缩放,点击百分比则会把缩放恢复为100%。 - 四种关系表示法,与开始绘制关系时使用的相同。参见开始编辑。绘制关系需要依次点击两个表,因此选择一种表示法后工具会切回指针。
- 禅模式
Alt + Z,只保留画布和这个工具栏,隐藏其余界面。再次按Alt + Z或点击按钮即可恢复。 Go to content指南针,仅在屏幕上没有任何表或备注时才会出现在工具栏末尾。参见浏览画布。
每个带有快捷键的按钮都会在提示中标出该快捷键。
在 Force 自动布局预览、表属性、Time Travel 或 Diff Viewer 打开期间,工具栏会暂时隐藏,关闭后再重新出现。

缩放
按住 mod 键并滚动鼠标滚轮进行缩放:Ctrl + Wheel (Windows/Linux) 或 ⌘ + Wheel (Mac)。仅滚动滚轮则是平移画布。
触控板上的捏合手势同样可以缩放,以捏合的位置为中心;触摸屏上的两根手指也可以缩放,并会随手指的移动平移画布。
快捷键: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 快捷键一样逐级调整缩放:每按一次调整 4 个百分点,并保持屏幕中心不变。两个按钮之间的百分比显示当前的缩放级别,点击它会像 Ctrl + 0 (Windows/Linux) 或 ⌘ + 0 (Mac) 一样直接回到 100%。
缩放范围为 10% ~ 150%。
在 70% 及以下时,表会折叠为名称和颜色边缘,单元格编辑、单元格快捷键以及复制粘贴都会停止工作,直到重新放大为止。
这三个快捷键同样可以缩放 Visualization 标签页,Graph 模式与 Flow 模式均适用,各自在自己的范围内缩放。参见可视化。

浏览画布
画布没有边界,也没有可设置的尺寸。表与备注就停在你放下它们的地方,下面这些都以图本身为准,而不是一张固定大小的页面。
拖动画布的空白区域即可平移视图,也可以用 Space 切换到抓手工具后在任意位置拖动,包括在表的上方。滚轮同样可以平移,Shift + Wheel 则是左右平移。
平移没有边界:滚轮、拖动和抓手工具都会让视图随你移动到任意远处,在任何一侧都可以越过表继续平移。
右上角的小地图显示的是图本身加上四周各一屏的空间,也就是滚动条可以到达的范围,并向外对齐到较粗的网格,因此缩小得越多,图在小地图中就越小。点击小地图可以将视图移动到该位置,拖动其中的视口矩形则可以平移。缩小时,视口矩形会随之变大,覆盖小地图上更大的区域。
右侧和底部的滚动条表示的是同一段范围:从图刚好位于屏幕一侧之外,到刚好位于另一侧之外,因此它至少比当前绘制出的图长出一屏,视图停在图之外时还会更长。在禅模式之外,只要文档中有任何表或备注,即使全部内容都已在屏幕内,两条滚动条也都会显示;只有空文档既没有滚动条也没有小地图。
拖动滚动条滑块或小地图中的视口矩形是唯一会停下的平移:它最远只能平移到表刚好移出屏幕的位置;如果拖动开始时的位置比这更远,则最远只能到拖动开始的位置。
如果平移之后屏幕上没有留下任何表或备注,画布工具栏末尾会出现一个 Go to content 指南针,用箭头指出最近的对象在哪个方向、有多远。点击它即可在不改变缩放的情况下把该对象移到屏幕中央。

Diff Viewer
可以将以前保存的文档与当前文档进行比较。
在画布的右键菜单中选择 Diff Viewer,然后选择之前导出的 .json 文档。
该视图会覆盖在画布之上:左侧显示变更内容,右侧并排显示保存的文档与当前文档。
表与列按名称进行匹配。两侧值不同的单元格会在两侧都被着色,保存的文档中为红色,当前文档中为绿色,因此只在一侧存在的表或列会整体着色。
每一侧都可以通过滚轮或拖动空白区域平移,并通过 Ctrl + Wheel (Windows/Linux)、⌘ + Wheel (Mac) 或捏合手势缩放。在 70% 及以下,表会像在画布上一样折叠,着色也不再显示。
两侧都是只读的,不会修改文档中的任何内容。可以通过打开时出现的提示上的 Close 按钮或 Escape 关闭该视图。
