云表采用表格化编程,化繁为简将数据模型设计提炼为基本数项、明细表和交叉表,但我们在什么业务场景,设计什么样的数据项,对一个系统和表单来说却是非常重要,我们后续所有的表单、数据接口、填表公式和业务公式都是围绕这些数据设计开展。这些设计的数据项就是我们常听到的数据模型设计,或都说数据建模。数据模型设计是对业务的一个抽象的过程,是系统设计的关键,今天分享一下我是在云表数据模型的设计体验。 首席科普一下常用的两个数据建模板方法:1.范式建模型;2维度建模。 范式建模(这里特指三范式建模)是一种基于关系型数据库的范式建模技术,它是通过将数据分解成多个表,每个表都只包含一个实体来处理数据冗余。维度建模则是一种基于神经网络的建模技术,它是将数据通过多个维度进行组合处理,从而实现对数据分析和查询的优化。三范式建模注重数据的彻底分离和最小化冗余,而维度建模注重数据的整合和聚合,提升数据分析的效率。范式建模更适合处理规模较小,关系较简单的OLTP交易型业务,而维度建模则针对于在数据分析和查询方面的优化更适合OLAP查询分析类业务。 我们通常设计的是交易型系统,云表简化设计过程将范式建模提炼为基本数据项和明细表数据项,即1:N的数据关系,每个明细表都有的数据项设计到主表的基本数据项,确保上述的“数据彻底分离和最小化冗余”。数据通过主表和明细表的系统字段formid(表单id)关联,在查询和使用时很容易得到我们想要的数据。范式设计除了我们最常见的主附表设计外,还有代码表、基本表单(如职员信息,商品信息等)的设计等,都是通过唯一业务主键存储和关联。 当我们要做看板功能或是统计报表时这时就会设计交叉表,设计交叉表就是我们采用维度模型设计的数据结构。为了简化理解过程,云表将交叉表设计为表单的明细表,行列就是我们可以统计的维度,行业坐标定位一个数据项的值,即一个交叉点,所以有一个很形象名称叫交叉表。设计二维报表和仓库库位看板等,设计为交叉表都非常直观。 云表设计过程中的逆范式。三范式建模规范要求最小化冗余,当我们设计销售表单时,如果严格按照范式规范,那么销售表中只能存储商品编码,使用和查看商品名称都需要关联商品信息表才能获取。因此,我们这时通常会逆范式设计将商品名称数据项也设计在销售单的基本数据项中。 数据冗余和数据一致性问题。冗余数据必然会带来数据一致性的问题,因此,在使用数据过程中都应该采用商品编码关联。在商品信息表中商品名称变更时,应同时修改业务表中商品名称(数仓类项目记录过程可以不修改),同样的还有代码名称的修改等。 数据模型需要根据项目需求灵活设计,结合表格式编程的特点,浅谈了一下设计心得,欢迎各位探讨在自己项目的设计经验! |
+10
2 条回帖