实体与单据是业务建模的两个基本类别:实体描述长期存在的事物,单据记录一次发生的事件。两者在必填字段、数据变化方式、流程挂接上都有系统性差异,本文逐项对比并给出命名与落地的判断方法。
挑三张表,判断它是在描述一个事物,还是在记录一件发生的事。
如果把员工信息、设备台账、学生档案、车辆登记归到了一组——这一类长期存在、变化很少,像一篇说明文;如果把报销单、请假单、设备维修单、出库单归到了另一组——这一类一次一次发生、有头有尾,像一篇叙事文。
能分开它们,就已经抓住了低代码世界里最重要的一个分类:实体与单据。
表单用字段格式化地传信息,文章用自然语言传信息;一个讲规范,一个讲文采。但它们的共同点更根本:都承载信息内容,都用于人与人之间传递信息,都要让人看得懂、不产生歧义。
既然是一类东西,文章的分类方式就可以直接借过来给表单分类:说明文描述事物的特征,对应实体;叙事文要有时间、地点、人物、事件,对应单据。
实体就是一个事物:员工、岗位、部门、设备、学生、车辆——你数得出来的东西。
它必须有编号和名称。编号,比如员工编号、设备编号,一般用英文字母组合,它是这条记录的主键;名称是事物的名字;还要有状态:正常、维修中、报废中。
实体的特征是:持久存储、描述性质,整个生命周期里很少发生变化;主键一旦生成,就既不重复也不改变,别的单据通过引用它来关联。一张员工信息表,从上到下就是一篇说明文。
单据是在实体上发生的业务活动:员工报销单、学生缴费单、设备维修单。
它必须有三个字段:
再细分一层:需要审核的叫审批单,比如设备报废审批单、付款审批单;没有审核行为的叫记录单,比如设备清洁记录单。
单据的一生就是状态的一生:空白阶段刚被创建;草稿阶段可以反复修改;进入审核中,数据被锁定,节点一个一个往下跑;最后归档,数据进入休眠,可查不可改,然后成为统计分析和决策的数据源。
**单据是流水性质,用状态来控制它的生命周期;实体是描述性质,长期稳定地存在。**这两句话要放在一起记。
维度 | 实体 | 单据 |
|---|---|---|
必须字段 | 编号、名称、状态 | 单号、标题、状态 |
业务性质 | 描述事物特征、长期存在 | 记录一次事件、有始有终 |
数据变化 | 很少变化,主键不重复不改变 | 归档前频繁变化,归档后休眠 |
能否跑流程 | 不能,只能被引用 | 能,挂在节点上做审批 |
一句话:单据挂在实体上,发生在实体的整个生命周期里。
以一辆车的实体为中心:采购申请单是新增关系,流程走完,车辆台账里多一条数据;车辆维修单是业务关系;批量折旧单是批处理关系;车辆报废流程走完以后把实体状态改成报废,这是修改关系。
所有围绕一个实体的管理活动,都可以归进这四类:新增、修改、业务、批处理。
命名上,凡是叫"某某信息、台账、档案"的,多半是实体;凡是叫"某某单、申请表、记录表"的,多半是单据。也可以问两个问题:能回答"这是第几号"的是单据,能回答"这是什么东西"的是实体。
在该平台里,实体表单挂菜单做增删改查;单据表单可以独立存在也可以启动流程,单据里又分简易审批单和流程审批单两种形态。
最后是最常见的错误:把实体和单据揉成一张表——比如在员工表里塞一个"本月报销金额"字段。这种表,三个月以后一定失控。
带走三句话:
送大家一句研究事物的方法:先给它分类,分类清楚了,定义和名字自然就准了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。