01 什么是E-R图
E-R图(Entity Relationship Diagram)也称实体关系图,是一种用来描述实体、属性和关系的模型。我们常用矩形来表示现实中客观存在且相互区别的实体,用椭圆来表示实体具有的某一特征,用菱形来表示实体和实体间一对一,一对多和多对多的关系。假如现在回到我们大学的数据库课堂上,那么你一定不会对下面这个图感到陌生。
E-R图一般是用数据库外键来存储和维护这个关系。但是随着业务规模增大和数据量增长后外键性能的降低,越来越多的应用系统在设计时不再使用外键而通过业务代码来保障业务之间的依赖关系,从而导致不易通过外键信息查看到数据中的逻辑关系。
02 我们看到的E-R居然不一样
现在有一个数据库叫DMS_META,打开一个我们常用的数据库管理软件可以查看一下对应的E-R图。如下图所示,表在渲染的同时展示出了表与表之间的外键引用关系。
但当我们打开DMS查看对应E-R关系时,发现渲染出来的关系会更加丰富。跟之前的看到的E-R完全不一样。
03 DMS增强E-R做了什么
DMS的E-R图为什么会不一样?DMS对DMS_META这个库都做了哪些操作?增强了哪些能力?
3.1 传统E-R能力
我们使用DMS的表结构设计创建了4个会员表huiyuan_t1(简称t1表),huiyuan_t2(简称t2表),huiyuan_t3(简称t3表),huiyuan_t4(简称t4表),同时创建一个外键表huiyuan_fk(简称fk表),该表和t1表有外键引用关系。同时使用DMS的测试数据构建能力为这些表插入对应的测试数据。
待数据资产图谱构建完成后,回到DMS上查看对应的增强E-R图,可以查看到物理外键间的关联关系。
同时也可以点击“节点”和“边”查看对应的表详情和关联关系详情。
3.2 列算子血缘解析E-R能力
列算子血缘解析E-R是基于DMS自研的列算子血缘解析器的能力构建,DMS每天将通过SQL窗口和数据库开发工单中的所有SQL进行列算子血缘解析,并将经过列算子血缘解析后的字段之间的关联、依赖及影响关系纳入增强E-R图谱。
接下来我们在SQL窗口(也可以通过数据库开发中的变更工单)上模拟一些真实场景的数据库操作。分别使用t1表和t3表的user_id做一次关联生成一个宽表huiyuan_join(简称join表),使用t4表做一次数据过滤生成一个新的新表huiyuan_depend(简称depend表),使用t2表和t3表进行一定的过滤并关联起来生成一张新表huiyuan_influ(简称influ表)。
通过以上3条SQL模拟了DMS上一般用户的常见查询操作。待数据资产图谱构建完成后,回到DMS上查看对应的增强E-R图,可以看到,除了传统的物理外键外,字段关联字段,字段依赖字段,字段影响字段的关联关系也体现到了增强E-R图中。