Bootstrap

浅谈数据建模

1.什么是数据模型

数据模型是对业务的一种思考,是对数据价值提取的一种方法论,是一种基于数据的一种解决方案,数据模型最终的效果是使业务数据化,可量化。人们可以在经过数据模型组织后的数据进行决策,在业务上达到提效增本的效果。举例:如何衡量一家餐饮店的效率,最简单的数据模型,就是营业收入-减去各种成本得到净利润。同等时间该店的利润多,说明该店整体效率高,如果这个店持续亏损几个月,要分析亏损点在哪,这就需要更复杂的数据模型,得出人效、坪效、产销比、人均消费等更细粒度的指标去评估这家店的效率,从而指导店主去做出决策。

2.为什么要数据建模

数据建模能够帮助我们把业务通过数据串联起来,比如一道菜的制作,数据可以把菜从地里面串联到端上桌,全流程监测一道菜上制作的过程。数据建模最重要的是打破数据孤岛。菜的供货商有菜的进货价,运输费用,人工加工费用,没有数据建模这些都是数据孤岛,数据建模后,可以做到一个数据的融合,形成数据资产。

3.怎么建模

3.1建模工具

简单的可以用Excel,难点可以用power design。常见建模的方法分为两种维度建模和范式建模。

3.2建模理论

维度建模应用于OLTP(面向分析)系统,大数据开发从业者主要用的是维度建模,维度建模常见的有星型模型,雪花模型、星座模型、Data Vault模型、Anchor模型。前面三个就是叠罗汉感觉,星型模型=》雪花模型=》星座模型。星型模型通常应用于一条核心的业务线,雪花模型通常应用于几十条业务线,星座模型一般公司达不到这个规模,这是三个模型最后得到都是一个事实+维度的宽表模型。Data Vault模型、Anchor模型是实体+关系的宽表模型。在我的实际工作中,用星型模型和雪花模型比较多。

范式建模常应用于OLTP(面向事务处理)系统,后端开发从业者主要使用的是范式建模,应用的最多是三范式,当然还有四范式、六范式等。这里主要介绍三范式:

第一范式属性不可切割,既是字段里面不存在5台计算机这种内容,类似属性应该拆分成两个字段;

第二范式不能存在部分函数依赖,我的理解一个表里面不存在上下级的关系的内容,一个表里面只能记录单一方面的内容,比如记录学生科目成绩就是成绩,不要把学生科目老师的成绩记录在同一个表;

第三范式不能存在传递函数依赖,我的理解是对第二范式的补充,部分函数依赖不能根据已有数据推测数据属性之间的上下级关系,传递函数依赖是根据数据属性之间能推断出数据之间的关系,比如能根据学号推断出院系,院系能够推出系主任。这种属性数据不能放在一个同一个表中。

关于三范式建模,现在大部分公司也不是严格遵守,主要是以前受限于硬盘,现在存储很便宜,怎么方便怎么来,业务系统里面也常见宽表。

3.3建模原则

1.保证数据的稳定性、及时性、一致性(上下游数据可以回溯)。
2.数据模型最后对于业务应用,要达到开箱可用,易用,要与数据使用方达成一致。
3.要充分考虑到存储和计算成本,资源不足的时候尽量避免一些复杂的数据模型。
4.充分考虑是否支持扩展,简单的就是留几个备用字段,难点就是要求数据可以程序二次开发,不会改变原有数据的属性。
5.数据模型生成的数据要求高内聚低耦合,既公共数据要抽象化,扩展可定制化。

4.建模后的效果评估

1.用户体验为主,主要体现在查询成本高不高,学习成本如何?数据准不准?快不快?
2.对于数仓开发同学,开发成本高不高?
3.可以应用数据质量管理体系对数据的整体进行评估。

最后,欢迎大家关注我的公众号造轮子的坦克
在这里插入图片描述

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;