Dr.ERD를 사용하려면 JavaScript를 활성화해야 합니다. Dr.ERD는 Mermaid를 지원하는 로컬 우선 ERD 편집기입니다.

免费 ERD 入门教程 — 无需账号,本地创建第一个 ERD

这篇教程面向第一次设计数据库的读者,用免费 ERD 编辑器 Dr.ERD 在不注册账号的情况下,按顺序在本地完成一个三表 ERD。完成的模型保存为电脑上的 .drerd 文件。

当前文章: 免费 ERD 入门教程

1. 什么是 ERD、表和字段

ERD(实体关系图)用图形表示数据库结构。一个方框是一张表,表内的一行是一个字段。要保存的对象成为表,对象具有的属性成为字段。每条数据以一行记录保存,每行在每个字段上各取一个值。

  • 表:存放同类数据的集合,例如会员、订单、订单明细。
  • 字段:表保存的属性,例如 name(姓名)、created_at(创建时间)。
  • 行:一条实际数据。字段定义不变时,行数增加结构也不变。

2. 主键、外键与 1:N 关系

主键(PK)用于区分每一行,外键(FK)指向另一张表的键,把两张表连接起来。一个会员可以下多个订单时,关系就是会员 1 : 订单 N。子端允许存在没有订单的会员,因此表示为零或多个(0..N)。本教程的两个关系都是非标识关系,父键不会加入子表主键。

  • 外键字段的类型必须与被引用的字段一致:members.id 是 BIGINT,orders.member_id 也必须是 BIGINT。
  • 本教程手动输入 id 值,不使用自增(Identity)。
  • N:M 关系不会自动生成中间表,需要时请自行创建中间表。
  • 连接关系前,父表必须已经有主键。

3. 无需账号准备工作文件夹

Dr.ERD 无需安装,在 Chrome 或 Edge 中运行。不注册账号、选择工作文件夹即可开始建模,本地工作文件夹中的 ERD 默认不会上传到服务器。团队协作需要 Google 登录,团队文档会保存到所选团队。AI 对话是可选功能,只有在自行完成设置后发送的消息,才会把当前 ERD 上下文发送给你选择的提供方。

  1. 选择“启动编辑器”进入工作区。
  2. 在“选择工作区”中选择保存 .drerd 文件的文件夹。
  3. 浏览器询问文件夹访问权限时选择“允许”。
  • 桌面版 Chrome 与 Edge 支持选择并保存文件夹。
  • 再次打开同一个文件夹,之前的文件会出现在文件列表中。

4. 新建模型并选择 PostgreSQL 18

在文件列表上方点击“新建模型”,创建本教程使用的模型。目标数据库选择与示例相同的 PostgreSQL 18。点击“确认”后只会打开一个空画布,不会自动创建表。

  1. 在文件列表中点击“新建模型”。
  2. 在文件名中输入 first-erd。
  3. 在“目标数据库”中选择 PostgreSQL 18,然后点击“确认”。
  4. 画布打开后,点击上方工具栏中的“表”按钮。只有该按钮处于按下状态时才能放置表。
  5. 点击画布上的空白位置,放置第一张表。

5. 创建三张表和字段

第 4 步已经放置了第一张表,所以这里再创建剩下的两张,完成会员、订单、订单明细三张表。新建的表会自动带有公共字段 created_at 和 updated_at,因此要先把这两个字段从三张表(包括第 4 步放置的那张)中全部删除,然后再添加本教程的字段。之后用“添加列”添加一行,输入物理名和类型,并在 id 字段点击“指定 PK”。orders.created_at 删除后,请在这一步用“添加列”重新创建,并把类型设为 TIMESTAMP。下面的列表是本教程要创建的全部字段,请逐一核对是否遗漏。

  1. 点击上方工具栏中的“表”按钮,再点击画布空白位置放置一张表。第 4 步已经放置了第一张,所以用这个方法再放两张,一共三张。
  2. 以编辑状态打开表,用字段行右侧的垃圾桶(删除列)按钮,把 created_at 和 updated_at 从三张表中全部删除。
  3. 用“添加列”添加字段,并输入物理名和类型。
  4. 需要长度和小数位的类型要填写数值,例如 VARCHAR(100)、NUMERIC(12,2)。
  5. orders.created_at 在这里用“添加列”创建,并把类型设为 TIMESTAMP。默认公共字段已经删除,因此不会重名。
  6. 在 id 字段点击“指定 PK”,把它设为主键。
  7. 把表名设为 members、orders、order_items。
  • members:id BIGINT(PK)、name VARCHAR(100)
  • orders:id BIGINT(PK)、member_id BIGINT(FK)、created_at TIMESTAMP
  • order_items:id BIGINT(PK)、order_id BIGINT(FK)、product_name VARCHAR(100)、quantity INTEGER、unit_price NUMERIC(12,2)
  • 新建表自动带入的两个公共字段(created_at、updated_at)都会被删除,只重新添加 orders.created_at 并设为 TIMESTAMP,所以三张表的字段与下面列出的 10 个完全一致。
  • 三张表一共有 10 个字段,连接关系之后也应当仍然是 10 个。
  • 下面的 Mermaid 是完成模型的文本参考,请检查物理名和类型是否与上面的列表一致。
erDiagram
  members {
    BIGINT id PK
    VARCHAR(100) name
  }
  orders {
    BIGINT id PK
    BIGINT member_id FK
    TIMESTAMP created_at
  }
  order_items {
    BIGINT id PK
    BIGINT order_id FK
    VARCHAR(100) product_name
    INTEGER quantity
    NUMERIC(12,2) unit_price
  }
  members ||..o{ orders : "places"
  orders ||..o{ order_items : "contains"

6. 连接两个关系

打开“关系工具”中的 1:N 按钮,依次点击父表和子表,会打开关系设置界面。让“标识关系”保持关闭,在引用键中选择 PK,再在“引用键 → FK”中选择已经创建好的外键字段。

  1. 点击“关系工具”中的 1:N 按钮启用工具。
  2. 先点击父表 members,再点击子表 orders。第一次点击是父表,第二次是子表。
  3. 在打开的界面中让“标识关系”保持关闭。非标识关系会自动添加外键,但不加入子表主键。
  4. 在引用键中选择 PK,members 的主键 id 就是被引用的键。
  5. 在“引用键 → FK”中打开 id 一行的选择框,选择已有的 member_id,而不是“+添加列”。保留“+添加列”会新建一个 id_2,使字段数量增加。
  6. 点击“应用”保存关系。
  7. 用同样的方法再次点击 1:N 按钮,依次点击父表 orders、子表 order_items,把引用键 PK 的 id 对应到已有的 order_id,然后点击“应用”。
  • 两个关系都允许零或多个(0..N):没有订单的会员和没有明细的订单都可以保存。
  • 外键类型与被引用字段不一致时会提示错误。
  • 连接两个关系之后,模型仍然是三张表、10 个字段。如果字段变多,说明在“引用键 → FK”中选择了“+添加列”。

7. 把所有字段设为必填

本教程最终要求字段必须有值。在“列详情”中关闭“允许 NULL”,该字段就不能保存空值。

  1. 在“编辑表”中选择字段。
  2. 在“列详情”中关闭“允许 NULL”。
  3. 对三张表的 10 个字段全部重复一次。
  • “允许 NULL”保持开启时,该字段可以保存空值。
  • 导出 DDL 时,关闭“允许 NULL”的字段会输出为 NOT NULL。

8. 保存并重新打开

使用 Ctrl+S 或 Cmd+S 保存到工作文件夹的 .drerd 文件。在文件列表中重新打开同一个文件,保存的内容会原样出现。

  1. 按 Ctrl+S 或 Cmd+S。
  2. 确认未保存提示消失、显示已保存。
  3. 在文件列表中重新打开 first-erd。
  4. 检查三张表、两个关系和必填字段设置是否保持不变。
  • 完成结果:三张表、两个非标识 0..N 关系、三个主键、两个外键。
  • 保存的文件就是所选工作文件夹中的 .drerd 文件。

9. 常见问题排查

练习中最常遇到的三种情况及检查方法。

  • 文件夹权限:浏览器询问访问权限时选择“允许”。如果拒绝过或连接中断,用“选择工作区”或“重新连接文件夹”再次选中同一个文件夹。
  • 关系仍未配置:请设置关系的引用键与 FK 对应,并先为父表指定主键再连接。
  • 必填字段报错:检查设为必填的字段是否已关闭“允许 NULL”,允许留空的字段则保持开启。

10. 下一步

把完成的模型导出,用于真实数据库或文档。

  • 使用 SQL 导出生成 PostgreSQL 18 DDL,可直接在数据库中执行。
  • Mermaid 导出适合粘贴到文档和评审中。

创建你的第一个 ERD

Dr.ERD 在完成首次准备后,即使离线也支持编辑和文件保存。

启动编辑器

Dr.ERD 불러오는 중… / Loading Dr.ERD…