数据模型的设计是需要精雕细琢的,很多时候把数据模型的设计比喻为建筑设计,虽然,我并不会建筑设计,但是,我觉得每一个行业的设计工作都不是一件容易的事情,也都不是入门者一天两天能精通的。设计本身就是一件基于知识、经验和认知来预想未来事物的事情。必须具备对某个行业知识的大量储备,才可能客观地做出取舍,设计出可行的、高质量的产出,并经过不断的迭代和积累来创新。
数据模型设计的工作和用途,不同的人都有不同的理解和看法,比如说,有的人认为数据模型就是数据库表结构的设计,有的人认为数据模型可以看做是对业务数据的分类和关联。这些都没有错,这些都是模型的用途,就是为了让使用模型的人知道系统或数据库里的数据都有什么、放在了哪以及有啥关联性。
也正是因为模型里能够表达这些内容,决定了设计数据模型时要具备多样化的技能,首先要知道设计什么内容的模型,这就需要反复的收集需求,反复地分析和确认。而理解了需求之后还要知道怎么将这些内容给画在一张图里,在画图的时候还要考虑到系统程序处理的逻辑,数据和数据之间的关系。不仅如此,设计出来的模型最终要放到数据库中使用,所以,不仅需要知道怎么放和怎么取,还要考虑放到数据库里使用时候的便利性、效率性能等。要想设计出合理和通用的模型,还需要和大量的参考模型进行对标、分析和改造等。
简单地罗列一下我觉得想学好数据建模,需要的能力:
- 通过良好的沟通收集、分析、确认需求
- 使用建模工具画实体关系图,理解模型的表达方式
- 理解程序处理逻辑
- 了解行业业务和参考模型
- 会使用SQL处理数据
- 理解数据库性能优化相关知识
这么多东西想学会也不可能一天两天就能搞定的,只能循序渐进地来,随着了解的知识越来越多,对数据模型也就会不断有新的认识。
虽然从某种角度划分了多个阶段,但是,初级阶段会存在一定的先后顺序,达到中级以后就不一定非要按照顺序来,每一部分知识的学习都会扩展思维,提高设计的能力。
第一阶段
学会使用建模工具画实体关系图,着重理解实体、属性和关系等的含义,尤其是各种关系的表达方式
第二阶段
深入模型的表达和数据的实际形态,并理解不同的表达方式有哪些区别,在这个阶段强化通过模型看数据的思维
第三阶段
理解数据和数据之间的关系和层级概念,懂得对数据进行抽象,并根据实际需求判断合理性
第四阶段
理解高级模型设计的方法,应用这些方法在需要的部分提高模型的灵活性
第五阶段
理解关系型数据库性能优化的相关知识,能够从性能角度评价模型,并结合需求应用优化手段和反范式等物理模型设计方法提高模型的质量
第六阶段
业务是核心中的核心,对业务知识有了通透的理解才能通过模型表达的手段,设计出符合业务需求的模型。不仅如此,各个行业内都有很多参考模型,分析和理解参考模型,了解不同行业模型的共同点和不同点,也是提高模型设计能力的手段之一