一、概念数据模型的解释
概念模型是一种“单页”模型,该模型为特定用户在限定的业务范围内,按业务需求设计的。将概念模型限制于单页模型的原因在于:让建模工程师和其他参与者仅仅选出一些关键的概念。我们可以将20个概念安排到一页中,但显然500个不行。这里有一个很好的原则,作为建模工程师应该经常试问自己,模型用户是否会将某一概念作为业务领域中20大概念之一。
概念数据模型中包含概念及其定义,还包含概念间相互作用的关系。与逻辑模型、物理模型不同,在概念模型中允许包含多对多关系。如下图示例:
每位供应者都是人。
每位病人都是人。
每位供应者可以提供一个或多个预约(Appointment)
每位病人都可以申请一个或多个预约。
每个预定计划(Schedule)都可以经商议由一个或多个预约构成
每个科室(Department)可以容纳一个或多个预约。
每个预约必须涉及一位供应者、一位病人、一个科室和一个预定计划。
在概念层对概念的定义达成一致,那么对于更多细节的逻辑和物理分析将变得更为顺利,并能有效节约时间。以下3个理由说明定义的重要性:
1)辅助业务和 IT 决策。如果企业用户对某些概念做出不同的解释,而并非概念的实际意义,这时很容易做出不明智的决定,从而连累整个应用程序。假设企业用户想了解每月的产品订购量,用户可能以为产品中包含原材料,但事实并不包含。或者他们认为产品中不包含原材料,但事实上包含。此时,他们极有可能做出不准确的判断。
2)帮助记录和解决在同一概念上的不同观点。CDM 是一种很好的平台来解决对于高层次概念的不同认识的问题。在会计和销售部门工作的员工都认为顾客是一个重要的概念,但他们就如何定义能否达成共识?如果可以,距离创造一个全局的业务视图又靠近了一步。
3)提高数据模型精确度。要求数据模型是精确的,则要求概念的定义也是精确的。例如,订单行不能脱离产品存在,如果对于产品缺乏定义或定义不清,我们便降低了对概念及其关系认识的信任。
当完成带有定义的概念模型的设计时,该模型将成为强有力的工具为项目开展带来诸多的好处:
1)提供广泛的理解。仅一张纸就可以帮助我们理解非常复杂的事务,包括业务流程、应用需求,甚至在整个行业中,使具有不同背景和角色的人就某些概念,相互交流、理解,就存在的问题进行讨论并达成一致。
2)范围定义及指导。通过概念和业务规则的可视化,便于我们分析和认知模型的子集。例如,我们可以构建一个完整的概念模型,然后划分出我们计划开发的特定应用。概念具备的全局视角有助于我们决定如何部署以及如何与现存的应用共存,而且概念模型还可以为未来的业务功能提供指导。
3)提供积极的分析。通过为项目开发建立易于理解的概念模型,将极大地增加我们认知概念的不同定义、在项目范围内的不同解释等各类问题的机会,节约大量的时间和经费。
4)建立IT 和业务间的融治关系。对于大部分组织而言,在业务部门和 IT部门之间通常都存在不同程度的交流障碍,而概念模型的建立是一个消除或降低这种交流障碍的有效方法。
二、关系及维度概念数据模型
关系数据建模是通过准确的业务规则来描述业务如何运作的过程。
维度数据建模是通过准确的导航来描述业务如何被监控的过程。
1、关系CDM示例
2、维度CDM示例
三、创建一个概念数据模型
1、步骤1:询问5个策略性的问题
1)应用程序将要做什么?是否要替换现有系统,是否要提交新功能模块,是否要将现有的若干个应用整合在一起等。
2)“正如”还是“将要”?是否需要对当前业务环境进行考察,是否需要为当前业务建立模型,即“正如”视角。是否需要对一个新的业务提案进行考察,是否需要为新的业务提案建立模型,即“将要”视角。
3)统计分析是必须的吗?统计分析是一个和数字打交道的领域,即使用各种量度,并且可以在不同粒度下进行查阅。如果统计分析是必须的,至少有部分解决方案需要被维度模型化。关系建模着眼于业务规则,而维度建模则关注于业务问题。
4)认证是用户?搞清楚谁或者哪个组织是最终的验证者,来确认你对CDM的理解,以及最终谁将作为CDM的使用者。
5)灵活性还是简洁性?如果倾向于灵活性,需要使用通用型概念。
2、步骤2:概念的识别和定义
关系数据模型。5W1H(谁、什么、何时、何地、为何、如何),如下示例:
维度模型。明确哪些特定的业务问题必须被问答。例如,假设我们与来自某高校的业务分析师一道工作,来探讨下面4个问题:
1)展示近5年来,每学期得到财政资助的学生数目
2)展示近5个来,每学期获得政府金额或部分奖学金的学生数目
3)展示近3年来,每学期毕业的学生数目
4)展示近10年来,有多少学生申请该大学。
3、步骤3:创建关系
关系数据模型。关系数据模型需要描述所有的业务规则,所以我们在关系概念层的目标就是明确实体间的相互关系,清晰掌握所有的规则。对于模型中的每个关系线,都应该提出如下8个问题:
说明:1-4标识的是关系是是否需要标识“0”符号。5-8标识是否需要引入子类型。
示例:关于账户应用的8个问题
维度模型。创建粒度矩阵(Grain Matrix),行由维度组成,列为量度值,如下示例:
维度 | 学生数目 |
金融资助指标 | 1 |
学期 | 1、2、3 |
年 | 1、2、3、4 |
院系 | 1、2、3 |
奖学金指标 | 2 |
毕业指标 | 3 |
高中申请指标 | 4 |
大学申请指标 | 4 |
4、步骤4:明确最有效的形式
5、步骤5:检查并确认