1、数据模型的基本概念 及建模方法论,2,内容安排,数据模型相关术语,什么是数据模型,建模注意事项,数据模型方法论,什么是数据模型?,以数学的方式对现实事物的一种抽象表达, 特征: 内容:描述了数据、及其之间的关系 形式:反映了数据的组织与管理形式用途: (数据仓库)系统建设中的数据信息的蓝图 (数据仓库)系统建设的核心 业务人员与IT人员沟通的语言和工具,3,数据模型的分类,数据仓库项目中数据模型可以分为以下几种: Conceptual Data Model (CDM) 概念数据模型Logical Data Model (LDM) 逻辑数据模型Physical Data Model(PDM)物理
2、数据模型Application Data Model(ADM)应用数据模型,4,概念数据模型,Conceptual Data Model(CDM)概念数据模型 从全局上、宏观上介绍模型设计思路、范围和内容。 主要组成元素 主题 主题间关系 主题中的重要实体 实体间的相互关系 目标与用途 圈定建模的范围 划分建设主题 理清主要业务关系 构造逻辑数据模型的框架,5,逻辑数据模型,定义: 使用逻辑建模语言 定义数据与数据之间的逻辑关系 以图形化的形式 反映客户的业务规则 达到数据组织的设计目标,6,逻辑数据模型,Logical Data Model (LDM) 逻辑数据模型 设计人员:业务人员、IT
3、人员 设计目标 设计蓝图,指导整个数据仓库系统的建设 业务语言,业务人员与技术人员沟通的手段和方法 业务视图,独立于数据库技术实现 设计内容:实体、关系和属性 建模方法:3NF的设计方法 后续工作:物理数据模型的输入,7,物理数据模型,Physical Data Model(PDM)物理数据模型 设计目标:面向物理实施的具体细节 输入条件 继承于逻辑数据模型 依赖于所选择的数据库 决定于业务需求和性能之间的平衡 设计内容 数据库、表和字段、索引 需要作非正则化处理 后续工作:ETL、元数据管理和前端应用输入,8,应用数据模型,Application Data Model(ADM)应用数据模型
4、设计目标 满足最终用户对数据的访问(内容、形式要求) 满足应用系统对数据的存取(性能、存储要求) 主要特征 面向Power User和业务人员 与具体的应用相关 多维分析时一般采用星型结构或者雪花状结构的设计方法 是事实表和维度表的组合,9,逻辑数据模型与物理数据模型比较,10,逻辑数据模型在数据仓库中的定位,11,存储 和管理,采集,回答 业务问题,析取,清洗,条件,剔除,家庭关系,加载,业务系统,业务系统,业务数据,外部数据,关系数据库管理系统,聚集,统计,人工智能,神经网络,多维,可视化,EIS/DSS,电子表,对象语言,开发,企业 数据仓库,从属数据集市,业务人员,IT 用户,数据导入
5、,知识发现 数据挖掘,信息存取工具,源数据,逻辑数据模型,应用数据模型,12,内容安排,数据模型相关术语,什么是数据模型,建模注意事项,数据模型方法论,13,逻辑数据模型基本术语 (一),模型结构 第三范式(3NF)结构 星型结构(多星型结构) 雪花型结构,模型分类 概念数据模型 逻辑数据模型 物理数据模型 应用数据模型,3NF 基础数据模型,Star Schema,汇总数据/已知应用模型,Snowflake,星型结构的演变,14,实体 独立型实体 依赖型实体 子类实体,主题域 层面,核心实体 关系实体 特征实体 分类实体,逻辑数据模型基本术语 (二),15,属性: (描述真实或抽象事物相关联
6、的特征或性质) 主键 (识别实体实例唯一性的属性、属性组) 可选键 (能识别实体实例唯一性的其他属性、属性组) 外键 (通过父实体到子实体关系转移到子实体的属性) 非键属性(不是实体主键属性的其他属性 ) 基础名 (外键的原来名称 ) 角色名 (外键的新名称,表明取值是父实体属性的子集 ) 鉴别器 (取值决定父实体实例属于哪个子类的属性 ),逻辑数据模型基本术语 (三),16,关系 二元关系 父实体的一个实例严格关系子实体的0,1或多个实例的这种关系是二元关系 基数 父、子实体实例的比例,如1:1,1:M 识别(型)关系 子实体实例唯一性的识别与父实体相关联,父实体的主键属性成为子实体的主键属
7、性 非识别(型)关系 子实体不需要与父实体的关系就可以确定实例唯一性,父实体的主键属性成为子实体的非键属性,逻辑数据模型基本术语 (四),17,关系 确定关系 父实体的一个实例对应子实体的0、1或多个实例,并且子实体的一个实例对应0或1个父实体的实例 非确定关系多对多关系 子类关系 子类实体和所属父实体的关系 完全子类群所属父实体的每个实例都能够与子类群的一个实体实例相关联 不完全子类群所属父实体的每个实例不一定都有子类相关联,逻辑数据模型基本术语 (五),Logical Data Model (LDM) Example,18,Entity,Key Attribute,Nonkey Attri
8、bute,Relationship,Cardinality One-to-many 1 : M,Business Rule :one customer invoice at least contains one invoice item,逻辑数据模型基本术语 (示例),范式理论 Normal Form,关系数据库:原子性 第一范式:每个属性的值唯一 第二范式:键值依赖非键属性依赖所有的主键属性。(不存在部分键属性就决定的非键属性) 第三范式:完全键值依赖非键属性完全依赖且只依赖与键属性。(不存在非主键属性依赖其他非主键属性的情况) BCNF 第四范式 第五范式,19,关系数据库理论中对于实体划
9、分、实例(记录)设计的规则,The KEY - 1st Normal Form (1NF) The WHOLE Key - Second Normal Form (2NF) And NOTHING BUT the Key - Third Normal Form (3NF) - E. F. Codd,违反第一范式,20,如果数Quantity属性被定义为“不是与Order相关,就是与Part相关”,例如:在OLTP系统中常见的字段复用现象,属此类问题,110,152,违反第二范式,21,依赖了复合主键的一部分,客户经理/地域 客户经理编号,违反第三范式,22,依赖了非主键属性(不参与主键的外键属
10、性),正则化LDM对数据库物理实现的优势,保留了更多的业务关系更多的主索引选择最佳的数据分布更少的全表扫描更多的连接选择增强优化器使用更有利于提高性能的合并、聚合连接方法最佳的数据分离(耦合度)最佳的底层模型与用户分离最佳的数据控制每行更少的字段最佳的与应用分离更小的行最佳的数据块大小减少临时与永久日志空间减少物理 I/O,23,要考虑正则化对数据库性能的要求,24,内容安排,数据模型相关术语,什么是数据模型,建模注意事项,数据模型方法论,NCR数据仓库实施方法论,25,逻辑数据模型设计步骤,26,Step 1: 定义业务需求与范围 Step 2: 定义实体 Step 3: 定义关系 Step
11、 4: 定义非键属性 Step 5: 确认模型,Step 1: 定义业务需求与范围,27,确认已经理解全部业务需求 什么困难或问题需要解决?一般情况下这些问题主要关系到增加收入或降低成本等 模型必须能够回答哪些业务问题? 有哪些业务功能必须处理? 有哪些业务限制存在? 是否每一个参与人员都可以共享他们的业务需求?决定搜集需求的方法 回顾已经存在的资料(例如现存的报表) 新的业务需求访谈 以上两种混合的方法,Step 2: 定义实体,28,制定初始的实体池(不加区分的实体集合) 为每一个实体进行定义 删除超出项目范围的实体 为剩下的每一个实体定义主键 为可用的实体编写文档 可选: 使用带样本数据
12、的表格形式与用户进行确认 必须: 使用ER图制定最终版本的交付材料,Step 3: 定义关系,29,识别实体间的关系对于每一个关系 删除超出项目范围的关系 删除间接的关系 为每一个剩余的关系进行定义 识别每一个可用的关系的基数 (1:1, 1:M, M:M) 参照完整性 确保每一个关系(PK/FK参照)是完整的、有效的为模型中可用的关系编写文档,使用FK定义关系 可选: 使用带样本数据的表格形式与用户进行确认 必须: 使用ER图制定最终版本的交付材料,Step 4: 定义非键属性,30,识别并定义相关的非键属性删除超出项目范围的属性 根据直觉或经验将剩余的可用属性放入一个表中逐一验证每一个可用
13、属性的摆放位置为模型中的每一个可用属性编写文档 可选: 使用带样本数据的表格形式与用户进行确认 必须: 使用ER图制定最终版本的交付材料在模型的最终交付文档中添加业务限制条件,Step 5: 确认模型 (1),31,根据需要重复以上步骤多次反复经常是必须的(需求、业务规则、操作的复杂性决定)模型中的任何变更都会带来连锁反应,因此需要非常认真的回顾与评审: 实体的变更经常影响关系的定义和属性的位置摆放 关系的变更经常影响属性的位置摆放 属性的位置的变更可能影响其他属性的摆放,Step 5: 确认模型 (2),32,通过回答以下问题,持续地对模型的范围进行验证: 这一模型组件的含义、与业务的关系是
14、什么? 这一模型组件驱动的业务需求是什么?对模型是否已经满足所有业务需求、业务问题及限制条件等,进行验证绝对不要考虑任何与物理实施相关的问题!当所有回答业务需求所必须的数据已经齐备时,停止对模型进行优化,主要任务: 转换逻辑数据模型(LDM)为物理数据模型 定义主索引、次索引 非正规化处理(demoralizations) 数据库建立 设计优化 数据库功能测试使用工具: ERWin交付项目:物理数据模型(PDM) 物理数据模型说明书 数据库描述语言DDL,33,物理数据库设计,数据仓库管理,物理数据 模型,数据转换,应用开发,数据挖掘 服务,系统体系结构设计,元数据管理,解决方案集成,物理数据
15、模型命名规范,34,35,内容安排,数据模型相关术语,什么是数据模型,建模注意事项,数据模型方法论,建模注意事项,划分相应的主题 (客户、产品、账户、事件、行销活动、渠道、地理区域) 确定主题与主题之间的关系 客户购买产品产生账户、使用产品触发事件 运营商通过各种渠道、在不同地理区域进行个性化的行销活动 确定每个主题中关键的实体和实体间的关系 客户主题中:如参与人、个人、组织等实体、以及实体间的关系,参与人由个人和组织组成 进入逻辑数据模型,细化概念数据模型设计,36,建模注意事项,定义数据模型的命名规则 命名规范意义 统一命名,减少歧义 防止冗余的实体或属性的产生 良好的命名规范有助于业务人
16、员与技术人员间的沟通 便于使用 逻辑模型实体和属性命名方法 实体名:PAR_Party:主题域大写实体描述词采用全称 属性名:Account Nbr:词采用全称,首字母大写,词与词之间使用空格连接,37,38,LDM与PDM的区别,逻辑数据模型 (LDM)内容 业务模型 记录业务规则和关系, 与数据库无关用途: 与业务人员进行沟通和理解的工具 用来确认可以回答业务问题,物理数据模型 (PDM)内容 数据库模型 表现物理数据属性 数据类型, 长度, 索引 与数据库相关用途: 支持业务系统运行 解决数据存储问题 解决应用处理性能问题,39,LDM实现为PDM的条件,LDM 业务规则,PDM,软、硬
17、件 平台特性,应用开发策略,进行PDM设计必须考虑的因素、缺一不可:,核心业务规则,软、硬件平台个性化,用户、开发商个性化,70%,10%,20%,主要考虑因素,输入内容,影响程度,40,LDM 业务规则,PDM,业务规则继承,PDM不应违反LDM中界定的业务规则 包括: 业务概念相同 业务关系相同 核心业务要素相同,LDMPDM,41,业务规则继承(举例 ),客户编码 A B C ,用户编码 客户编码 X Y ,业务规则: 客户的定义是XXX(实体定义) 鉴别客户唯一性的标识为客户编码(主键) 客户核心属性包括:A,B,C(属性) 一个客户可以拥有多个用户(关系) 识别用户所属客户的标识为客
18、户编码(外键),客户,用户,CUST_ID A B C ,USER_ID CUST_ID X Y ,CUST,USER,42,软、硬件 平台特性,考虑平台特色,PDM应考虑实际数据库平台的特色 包括: 不同数据库的数据类型、长度不同 不同数据库的索引机制不同 不同的数据库处理性能不同 不同的硬件平台、配置处理性能不同,PDM,LDMPDM,43,考虑平台特色(举例 ),客户编码 客户姓名 B C ,用户编码 客户编码 X Y ,客户,用户,CUST_ID Char(8) Cust _Name Char(8) B C,USER_ID CUST_ID X Y ,CUST,USER,Cust_ID
19、Longint Guest_Name Char (12) B C ,USER_ID CUST_ID X Y ,CUST,USER,例如:数据类型、长度不同等,44,应用开发策略,考虑应用开发策略,PDM应考虑应用系统的实施策略 包括: 表的横向分割; 表的纵向分割; 创建汇总表、临时表; 属性冗余; 创建主索引(可能与LDM主键不同);,PDM,LDMPDM,45,考虑应用开发策略(举例 ),客户编码 客户姓名 B C ,用户编码 客户编码 X Y ,客户,用户,CUST_ID Cust _Name B,USER_ID CUST_ID X Y ,CUST_B,USER,CUST_ID C,CU
20、ST_C,横向分表,CUST_ID A B C ,USER_ID CUST_ID X Y A,CUST 1,USER,CUST_ID A B C ,CUST 2,CUST_ID A B C ,CUST 3,1类 (前1000条),2类 (中2000条),3类 (后1000条),共3000条,例如:横向表、纵向分表、子类、属性冗余等,建模注意事项,设计逻辑数据模型 按照ERA设计流程设计逻辑数据模型 确定实体Entity 定义实体的主键KEY 定义部分非键属性Non-Key Attribute 定义非唯一属性组,Inversion Entry 添加相应的注释内容,46,建模注意事项,设计逻辑数据
21、模型确定实体与实体之间的关系Relationship 确定实体间关系属于1:1,1:M还是M:M 通过Foreign Key进行体现补充实体的非键值属性Attribute 按照3NF的规则,判定每添加的一个属性是否符合3NF的设计原则 增加的属性如果违反3NF,确定新的实体和关系 添加中文注释部分,47,建模注意事项,物理数据模型设计 物理数据模型的输入 逻辑数据模型 SDA源数据分析 非正则化方面的需求,如性能和存储的要求 物理数据模型的输出 物理数据模型 物理数据模型设计说明书 生成DDL建表语句 作为SDM(源数据对应)的输入,SDM将提供ETL数据转换规则,48,建模注意事项,物理数据模型设计 以逻辑数据模型作为输入 按照RDBMS的要求对于相应的表和字段进行简写 依照物理数据模型命名规范 非正则化处理 定义索引 定义是否允许NULL 定义是否可以压缩 定义是否大小写敏感 定义是否需要分区,49,模型设计的后续工作,模型的验证工作 软验证业务案例 硬验证业务数据 模型设计维护和扩展工作 数据模型是不断增强的,可扩展的,但要保证其相对的稳定性 前端应用中的多维模型的设计 前端应用以及ETL从性能和使用上对于PDM的修改要求 业务规则的变化以及新的产品的产生也会对LDM和PDM有修改或者扩展的要求 模型设计要考虑今后的可扩展性,以适应新的业务规则和业务需求。,50,