使用mermaid绘制专业实体关系图(ER图)教程

使用mermaid绘制专业实体关系图(ER图)教程

mermaid mermaid 项目地址: https://gitcode.com/gh_mirrors/mer/mermaid

什么是实体关系图(ER图)

实体关系图(Entity Relationship Diagram)是一种用于描述特定知识领域中相关事物概念的数据模型。它由实体类型(对感兴趣事物的分类)和实体间可能存在的关系组成。在mermaid项目中,我们可以使用简洁的语法来绘制专业的ER图。

基础ER图示例

让我们从一个简单的订单系统示例开始:

erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE-ITEM : contains
    CUSTOMER }|..|{ DELIVERY-ADDRESS : uses

这个例子展示了:

  • 客户(CUSTOMER)可以下多个订单(ORDER)
  • 每个订单包含多个订单项(LINE-ITEM)
  • 客户可以使用多个送货地址(DELIVERY-ADDRESS)

实体和关系语法详解

基本语法结构

mermaid的ER图语法遵循以下格式:

<实体1> [<关系> <实体2> : <关系标签>]

每个部分解释如下:

  • 实体名称:必须以字母或下划线开头,可以包含数字和连字符
  • 关系:描述两个实体间的关联方式
  • 关系标签:从第一个实体的角度描述关系

关系表示法

mermaid使用最流行的"乌鸦脚"表示法来描述关系的基数性。关系标记由三部分组成:

  1. 第一个实体相对于第二个实体的基数
  2. 关系是否赋予"子"实体身份(实线或虚线)
  3. 第二个实体相对于第一个实体的基数

基数标记由两个字符组成:

  • 外层字符表示最大值
  • 内层字符表示最小值

基数类型对照表

| 标记 | 含义 | 别名 | |------|------|------| | \|o | 零或一 | zero or one | | \|\| | 恰好一 | exactly one | | }o | 零或多个 | zero or more | | }\| | 一或多个 | one or more |

实体属性定义

在ER图中,我们可以为实体定义属性来增强图表的可读性:

erDiagram
    CUSTOMER ||--o{ ORDER : places
    CUSTOMER {
        string name
        string custNumber
        string sector
    }
    ORDER ||--|{ LINE-ITEM : contains
    ORDER {
        int orderNumber
        string deliveryAddress
    }

属性定义包含在实体名称后的大括号内,格式为类型 名称。属性类型可以是任何有效的标识符,没有预定义的限制。

主键和外键

在属性定义中,我们可以指定主键(PK)、外键(FK)和唯一键(UK):

erDiagram
    PERSON {
        string driversLicense PK "驾照号码"
        string(99) firstName "最多99个字符"
        string lastName
        string phone UK
        int age
    }

高级特性

实体别名

从v10.5.0开始,可以使用方括号为实体定义别名:

erDiagram
    p[Person] {
        string firstName
        string lastName
    }
    a["客户账户"] {
        string email
    }

关系标签

  • 多词标签需要用双引号括起来
  • 如果不需要标签,使用空字符串""

样式定制

mermaid提供了多种样式定制选项:

基本颜色设置

| 参数 | 用途 | |------|------| | fill | 实体或属性的背景色 | | stroke | 实体边框或关系线颜色 |

CSS类选择器

| 选择器 | 用途 | |------|------| | .er.entityBox | 实体框样式 | | .er.relationshipLine | 关系线样式 | | .er.attributeBoxOdd | 奇数行属性框样式 |

最佳实践建议

  1. 命名规范:虽然mermaid不强制要求,但建议实体名称使用单数名词和大写字母
  2. 属性选择:不必列出所有属性,选择最能说明实体用途的关键属性即可
  3. 外键处理:在逻辑模型中,可以省略外键属性,因为关系线已经表达了关联
  4. 渐进式构建:可以先定义实体,再逐步添加关系和属性

通过mermaid的ER图功能,开发者可以快速创建专业的数据模型图,无论是用于数据库设计还是系统分析,都能清晰表达实体间的复杂关系。

mermaid mermaid 项目地址: https://gitcode.com/gh_mirrors/mer/mermaid

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裴麒琰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值