编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 质量保障

  • 产品思考

  • 软实力

  • 开发流程

  • Git应用

  • 技术模版

  • 技术规范

  • markdown

  • mermaid

    • Mermaid 图表完全指南
    • Mermaid 基础入门
    • Mermaid 流程图完全指南
    • Mermaid 时序图完全指南
    • Mermaid 类图与 ER 图
      • 一、类图解决什么问题
      • 二、类定义
        • 2.1 基础语法
        • 2.2 属性与方法类型
        • 2.3 泛型
        • 2.4 抽象类和接口
      • 三、六种关系
        • 关系标签与基数
      • 四、实战:电商订单领域模型
      • 五、ER 图(Entity Relationship)
        • 5.1 基础语法
        • 5.2 实体定义
        • 5.3 实战:电商数据库 ER 图
      • 六、速查
    • Mermaid 状态图与 Git 图
    • Mermaid 甘特图与饼图
    • Mermaid 其他图表合集
    • Mermaid 综合实战
  • license

  • 博客部署

  • 技术招聘

  • 测试经验

  • 技术
  • mermaid
杨充
2021-08-15
目录

Mermaid 类图与 ER 图

# Mermaid 类图与 ER 图

# 一、类图解决什么问题

类图描述系统中类的结构以及类之间的关系。在做架构设计、代码评审、或者看开源项目时,一张类图胜过千言万语。


# 二、类定义

# 2.1 基础语法

classDiagram
    class User {
        +String name
        +int age
        +login() bool
        +logout() void
    }
1
2
3
4
5
6
7

成员可见性符号:

符号 含义
+ public
- private
# protected
~ package/internal

# 2.2 属性与方法类型

classDiagram
    class Order {
        +String orderId
        -BigDecimal amount
        #OrderStatus status
        +create() Order
        -validate() bool
        #calculateTotal() BigDecimal
    }
1
2
3
4
5
6
7
8
9

用括号 () 区分方法和属性:

+String name          属性:可见性 + 类型 + 名称
+login() bool         方法:可见性 + 名称() + 返回类型
1
2

# 2.3 泛型

classDiagram
    class Repository~T~ {
        +save(T entity) void
        +findById(Long id) T
        +findAll() List~T~
    }
1
2
3
4
5
6
class Repository~T~          类定义泛型
List~T~                       属性/返回类型泛型
1
2

# 2.4 抽象类和接口

classDiagram
    class Animal {
        <<abstract>>
        +String name
        +eat()* void
        +sleep() void
    }
    
    class Flyable {
        <<interface>>
        +fly() void
    }
    
    class Bird {
        +fly() void
        +eat() void
    }
    
    Animal <|-- Bird
    Flyable <|.. Bird
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<<abstract>>    抽象类标记
<<interface>>   接口标记
*               抽象方法(方法后加 *)
1
2
3

# 三、六种关系

关系 语法 含义 代码体现
继承 <\|-- is-a class Dog extends Animal
实现 <\|.. can-do class Bird implements Flyable
组合 *-- has-a(强) 成员变量,同生命周期
聚合 o-- has-a(弱) 成员变量,独立生命周期
关联 --> uses-a 方法参数/返回值
依赖 ..> depends-on 局部变量/静态调用
classDiagram
    Animal <|-- Dog : 继承
    Animal <|-- Cat : 继承
    Flyable <|.. Bird : 实现
    Car *-- Engine : 组合
    Library o-- Book : 聚合
    User --> Order : 关联
    Service ..> Repository : 依赖
1
2
3
4
5
6
7
8

# 关系标签与基数

classDiagram
    Customer "1" --> "*" Order : 拥有
    Order "1" --> "1..*" OrderItem : 包含
    Student "1..*" --> "1..*" Course : 选修
1
2
3
4
"1"      一个
"0..1"   零或一个
"1..*"   一到多个
"*"      零到多个
"n"      精确n个
1
2
3
4
5

# 四、实战:电商订单领域模型

classDiagram
    class User {
        +Long id
        +String name
        +String email
        +register() void
        +login() bool
    }
    
    class Order {
        +String orderNo
        +BigDecimal totalAmount
        +OrderStatus status
        -LocalDateTime createTime
        +create() Order
        +pay() bool
        +cancel() void
    }
    
    class OrderItem {
        +Long id
        +String productName
        +int quantity
        +BigDecimal unitPrice
    }
    
    class Product {
        +Long id
        +String name
        +BigDecimal price
        -int stock
        +reduceStock(int) bool
    }
    
    class Payment {
        <<interface>>
        +pay(Order) bool
        +refund(Order) bool
    }
    
    class Alipay {
        +pay(Order) bool
        +refund(Order) bool
    }
    
    class WechatPay {
        +pay(Order) bool
        +refund(Order) bool
    }
    
    class Logistics {
        +String trackingNo
        +LogisticsStatus status
        +ship() void
    }
    
    User "1" --> "*" Order : 创建
    Order "1" *-- "1..*" OrderItem : 包含
    OrderItem "*" --> "1" Product : 对应
    Payment <|.. Alipay : 实现
    Payment <|.. WechatPay : 实现
    Order --> Payment : 使用
    Order "1" --> "0..1" Logistics : 关联
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# 五、ER 图(Entity Relationship)

ER 图描述数据库表之间的关系,替代 Excel 画表结构。

# 5.1 基础语法

erDiagram
    USER ||--o{ ORDER : "下单"
    ORDER ||--|{ ORDER_ITEM : "包含"
    PRODUCT ||--o{ ORDER_ITEM : "被选"
1
2
3
4
||    必须一
|o    一或零
}|    一或多
}o    零或多
1
2
3
4

# 5.2 实体定义

erDiagram
    USER {
        bigint id PK
        varchar name
        varchar email UK
        datetime created_at
    }
    
    ORDER {
        bigint id PK
        varchar order_no UK
        bigint user_id FK
        decimal total_amount
        tinyint status "1待付2已付3已取消"
        datetime created_at
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PK    主键
UK    唯一键
FK    外键
"注释" 字段说明
1
2
3
4

# 5.3 实战:电商数据库 ER 图

erDiagram
    USER ||--o{ ORDER : 创建
    USER ||--o{ ADDRESS : 拥有
    USER ||--o{ CART_ITEM : 购物车
    
    ORDER ||--|{ ORDER_ITEM : 包含
    ORDER ||--|| PAYMENT : 支付
    ORDER ||--o| LOGISTICS : 物流
    
    PRODUCT ||--o{ ORDER_ITEM : 被选
    PRODUCT ||--o{ CART_ITEM : 加入
    
    CATEGORY ||--o{ PRODUCT : 分类
    
    USER {
        bigint id PK
        varchar nickname
        varchar email UK
        varchar phone UK
        tinyint status
    }
    
    ORDER {
        bigint id PK
        varchar order_no UK
        bigint user_id FK
        decimal total_amount
        tinyint status "1待付2已付3发货4完成5取消"
    }
    
    PRODUCT {
        bigint id PK
        varchar name
        decimal price
        int stock
        bigint category_id FK
    }
    
    PAYMENT {
        bigint id PK
        bigint order_id FK
        varchar pay_channel "alipay/wechat"
        tinyint status
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

# 六、速查

┌──────────────────────────────────────────────┐
│            Mermaid 类图 & ER图速查            │
├──────────────────────────────────────────────┤
│ 类图                                         │
│ class Name { +属性 -方法() }                  │
│ <<abstract>>  <<interface>>  <<enum>>        │
│ <|-- 继承  <|.. 实现  *-- 组合  o-- 聚合     │
│ --> 关联  ..> 依赖                           │
│ class Name~T~   泛型                         │
│                                              │
│ ER图                                         │
│ ENTITY { type name KEY }                     │
│ ||--|| 一对一  ||--o{ 一对多                 │
│ }|--|{ 多对多  ||--o| 一或零                  │
│ PK 主键  UK 唯一  FK 外键                    │
└──────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

🏃 下一篇:状态图与Git图——状态流转、复合状态、分支合并、Git分支提交可视化。

#Mermaid#类图#ER图#架构
上次更新: 2026/06/07, 09:20:35
Mermaid 时序图完全指南
Mermaid 状态图与 Git 图

← Mermaid 时序图完全指南 Mermaid 状态图与 Git 图→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式