Skip to content

实体关系图

实体关系图(ER图)用于模型化数据库系统中实体之间的关系。它们展示了数据库的逻辑结构。

语法

基本元素

  • 实体: entity 实体名
  • 属性: 在实体内列出
  • 关系: 实体之间的各种连接类型
  • 基数: |o--o|, }o--o{

关系类型

  • 一对一: ||--||
  • 一对多: ||--o{
  • 多对一: }o--||
  • 多对多: }o--o{

基础示例

代码:
mermaid
erDiagram
    客户 ||--o{ 订单 : 下单
    订单 ||--|{ 订单项目 : 包含
    产品 ||--o{ 订单项目 : "包含于"
Ctrl + Enter|

高级示例

这是一个展示博客系统的更详细的ER图:

代码:
mermaid
erDiagram
    用户 ||--o{ 文章 : 撰写
    用户 ||--o{ 评论 : 发表
    用户 {
        int 用户ID
        string 用户名
        string 邮箱
        string 密码
        date 创建时间
    }
    文章 ||--o{ 评论 : 包含
    文章 ||--o{ 分类 : 属于
    文章 {
        int 文章ID
        string 标题
        text 内容
        date 发布时间
        bool 是否发布
    }
    评论 {
        int 评论ID
        text 内容
        date 创建时间
    }
    分类 {
        int 分类ID
        string 名称
        string 别名
    }
Ctrl + Enter|

属性和类型

可以指定属性及其类型:

代码:
mermaid
erDiagram
    客户 {
        int 客户ID PK
        string 姓名
        string 邮箱 UK
        date 注册时间
    }
    订单 {
        int 订单ID PK
        int 客户ID FK
        decimal 总金额
        date 订单日期
    }
Ctrl + Enter|

关系标签

可以添加标签来描述关系:

代码:
mermaid
erDiagram
    医生 ||--o{ 预约 : "安排"
    患者 ||--o{ 预约 : "预约"
    预约 ||--|| 处方 : "产生"
Ctrl + Enter|

附加功能

键类型

  • PK: 主键
  • FK: 外键
  • UK: 唯一键
代码:
mermaid
erDiagram
    产品 {
        int 产品ID PK
        string 名称 UK
        decimal 价格
        int 分类ID FK
    }
Ctrl + Enter|

样式设置

外观可以通过以下方式自定义:

  • 不同的关系类型
  • 属性类型
  • 关系标签
  • 实体名称和描述

实用技巧

  • 使用清晰描述性的实体名称
  • 仅包含重要属性
  • 使用正确的基数显示关系
  • 添加有意义的关系描述
  • 考虑规范化规则
  • 将相关实体分组
  • 使用标准命名约定

常见问题解决

  1. 设计问题

    • 确保实体名称明确
    • 验证关系的基数
    • 检查属性的完整性
  2. 关系问题

    • 确认关系类型正确
    • 验证外键约束
    • 检查循环依赖
  3. 属性问题

    • 确保属性命名清晰
    • 验证数据类型
    • 检查键的正确性

下一步