1. 关于“处理”Process(就是那个圆框框)
A. 禁止“无中生有”:
如果一个圈圈只有箭头往外跑,没有箭头进来——它就像魔法师,凭空变出数据!系统里不允许这种“奇迹”。所以,它必须是个“数据源”(Source,也就是外部世界)。
B. 禁止“只吃不吐”:
如果一个圈圈只有箭头往里钻,没有箭头出去——它就像黑洞,把数据全吞了!这种“大胃王”必须是个“数据汇”(Sink,也是外部世界)。
C. 起名必须“动词+名词”:
比如“算成绩”、“存照片”,别整成“成绩”、“照片”这种干巴巴的名词。
2. 关于“数据仓库”Data Store(就是那两条平行线)
D. 仓库之间不能直接串门:
A仓库的数据不能直接飞到B仓库,必须让某个圈圈(处理)当快递员,帮你搬过去。
E. 外部世界不能直接往仓库里扔东西:
比如“用户”不能直接往“学生档案库”里塞数据,得先让“登记学生信息”这个圈圈收一下,再存进去。
F. 仓库也不能直接往外扔东西给外部世界:
“学生档案库”不能直接甩成绩单给“家长”,得让“生成成绩单”这个圈圈取出来,再递出去。
G. 起名必须纯名词:
比如“学生档案库”、“游戏金币余额”。别整成“存学生档案”这种带动作的词。
3. 关于“外部角色”Source/Sink(就是那个方框)
H. 外部世界之间不能直接飞纸条:
比如“学生”不能直接发消息给“老师”,如果系统要管这事儿,就得让“提交作业”这个圈圈当中转站。
如果这事儿系统根本不管(比如学生私下递情书),那就别画在图里!
I. 起名必须纯名词:
比如“学生”、“老师”、“支付宝”。别整成“登录学生”这种动词。
4. 关于“数据流”Data Flow(就是那个箭头)
J. 箭头是单行道:
默认只能往一个方向流。如果既要读又要写(比如先查库存再改库存),可以画两根箭头,别偷懒画一根双向的。
K. 分叉箭头=“复印机”:
一根箭头分叉成两根,意思是数据被复印成完全相同的N份,分别送到不同地方。比如“成绩单”同时发给“学生”和“家长”。
L. 合并箭头=“拼车”:
两根箭头合成一根,意思是数据从两个地方来,但必须一模一样,才能拼成一辆车送到同一个地方。
M. 禁止“原地打转”:
数据不能从A圈圈出去,绕了一圈又直接回到A圈圈。必须至少让另一个圈圈B碰一下,变点花样再回来。
N. 箭头指向仓库=“改仓库”:
比如“新增订单”、“删除用户”、“修改密码”。
O. 箭头离开仓库=“查仓库”:
比如“读取库存”、“显示余额”。
P. 起名必须名词:
比如“成绩单”、“游戏金币”。如果多个数据一起飞,可以打包写:“成绩单+学生证”,但必须是同一包裹,不能“成绩单”和“游戏金币”硬塞同一根箭头。
总结口诀:
- 圈圈要动词,仓库要名词,外部要名词,箭头要名词。
- 仓库不直连,外部不直连,数据不魔法,不黑洞,不原地打转!