DBeaver ER图默认不按库分层,因层次布局基于外键而非schema;需手动切换为分组布局,创建同名schema分组并拖入表,启用Auto-layout、取消折叠、导出时选“Export as image”并勾选Include groups方可完整呈现。

ER图默认不按库分层?先确认你用的是哪个布局算法
DBeaver 的 ER 图默认使用 层次布局(Hierarchical Layout),但它对“层次”的理解是基于外键依赖关系(比如 orders → users),不是按数据库(schema)或 catalog 分组。如果你看到所有表堆在一块、没按库隔离,不是 Bug,而是当前布局算法压根不处理 schema 分组逻辑。
真正能实现“按库分层”的只有 分组布局(Group Layout)——但它不是默认选项,也不在右键菜单里直接暴露,必须手动开启。
- 打开 ER 图后,点击画布空白处,确保没有选中任何实体
- 右侧属性抽屉中找到
Layout区域,把下拉框从Hierarchical改成Group - 此时图会自动重排,但还不会分库——你需要先手动创建分组
怎么手动创建 schema 分组并把表拖进去
分组布局生效的前提是:你得先定义分组容器,再把表拖进去。DBeaver 不会自动按 schema 名建组,这点和 PowerDesigner 不同。
- 右键画布 →
New Group→ 输入组名,建议直接用 schema 名(如public、sales、auth) - 在数据库导航器中,展开对应 schema,把里面的表一个个拖进刚建的组里(支持多选后拖拽)
- 拖入后,表会缩进显示在组内,且组自带边框和标题栏,视觉上立刻分层
- 如果某张表被外键跨 schema 引用(比如
sales.orders.user_id→auth.users.id),连线会自动跨组延伸,不会断裂
为什么改了 Group Layout 还是乱?检查这三个隐藏开关
即使启用了 Group 布局,图仍可能错位或重叠,常见原因不是算法问题,而是三个常被忽略的 UI 状态:
-
Auto-layout on change关闭了:在 ER 图顶部工具栏,确认那个齿轮图标旁的Auto开关是亮起状态,否则手动拖动或增删表后不会自动重排 -
Fit to window被误触发:按Ctrl+0会强制缩放画布,导致分组边界被压缩变形;用Ctrl+=或鼠标滚轮调回合适比例 - 某个组被设为
Collapsed:右键组标题栏,确认没勾选Collapse group,否则里面表会被隐藏,连线也消失
导出时分组结构丢失?这是预期行为,需换导出方式
用右键 → Export diagram 导出 PNG/SVG 时,分组容器(group border、标题)默认不渲染——这是 DBeaver 的已知限制,不是你配置错了。
要保留分层结构,必须走另一条路径:
- 右键画布 →
Export as image...(注意是带as image的那个) - 在弹出窗口中勾选
Include groups和Show group titles - 导出格式选
SVG,它能完整保留分组边框、字体、缩放矢量信息 - PNG 也可用,但放大后边缘会模糊,不适合嵌入文档作正式交付
真正容易被忽略的是:分组本身不参与自动布局计算,只提供视觉容器。如果你希望不同 schema 的表之间保持间距,得靠手动拖动整个组的位置——DBeaver 不会替你“智能拉开距离”。

















