分享

数据建模相关介绍

redhat1986 2015-1-22 18:13:16 发表于 总结型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 14432


什么是数据建模?



20世纪80年代比尔盖茨梦想是:“未来每个人的桌面上都有一台电脑”,那时电脑在人们的印象中还是放置在专门的电脑机房里的高端设备。

20世纪90年代,Sun公司提出了“网络计算机”的概念,喊出“网络就是计算机”的口号,那时大家最熟悉的电脑应用恐怕是“纸牌”和“扫雷”。

进入21世纪,IT技术不断发展,互联网、网格、WEB2.0、云、大数据、移动互联网各种技术层出不穷,各种电脑终端设备已经不仅仅是占领了我们的桌面,更是渗透到了日常生活的方方面面。

出门坐车在智能手机上可以查到公交车还有多远到站,用手机也可以提前预约叫出租车,在超市买东西可以直接刷卡消费不用带太多的现金,在家里就可以交水费电费手机费……网络、电脑和软件系统提高了我们的工作效率、改善我们生活质量。

所有这些,除了网络、电脑和手机设备等基础设施之外,最具魅力的是以数据库为基础的各类软件系统,实现了丰富的应用,解决了工作生活中的各种问题。这些软件系统在数据库层面目前最主要的实现方式还是使用关系型数据库。

关系型数据库以人类最为熟悉的二维表格形式,在数据库里记录数据,并且提供各种查询和操作的手段。应用软件通过对数据库的操作实现了信息的存储、加工处理、查询和传递。这类应用软件不仅要有良好的用户界面,还需要保证数据存储、处理、查询的准确性和高效性。而在数据层面的这些需求,很大程度上依赖于数据模型设计的好坏,即在数据库里的二维表格如何设计。

关系型数据库,建立于关系模型的理论基础之上,使用集合代数等数学概念和方法来处理数据库里的数据。关系型数据库最常用的操作有:选择、投影、连接、并、交、差、除等数据查询操作和增加、删除、修改等数据处理操作。标准数据查询语言(SQL)就是一种基于关系数据库的语言,这种语言实现了以上的对关系数据库中数据的各种操作。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、MySQL等。

在关系型数据库里,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

实体关系模型(Entity-Relationship Model),简称E-R Model运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。设计关系数据库时,遵从不同的规范要求,能设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。设计关系数据库的过程也称为数据建模。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般说来,数据库只需满足第三范式(3NF)就行了。第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

在取款机上取一笔钱,在网络上交水费电费,在电子商务网站上购物,实现这些事情的软件系统,我们归类于联机事务处理(OLTP)系统。联机事务处理最主要的功能是完成一笔交易,并记录下这笔交易的所有信息。在常见的联机事务处理(OLTP)系统里,使用第三范式建模能够设计出合理的模型,支持各种前端开发工具进行应用系统的开发,保证数据占用存储空间较小和数据查询的高效。

在网银里分析当月的收支情况,在电子商务网站上自动推荐你感兴趣的商品,这些应用,我们归类于联机分析处理(OLAP)系统。联机分析处理系统往往根据联机事务处理系统里记录的大量信息,产生一些分析决策信息。对于联机分析处理(OLAP)系统,第三范式(3NF)模型往往意味着复杂的表连接和大量的数据输入输出(IO)产生,极大地影响数据查询的性能。

OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它的技术核心是“维”这个概念,即观察事物的角度。

从SQL的角度来看,典型的OLTP查询是根据主关键字对表进行连接,查询各类非主关键字,较少地会使用到聚集函数;典型的OLAP查询是根据主关键字对表进行连接,依据“维度”类非主关键字进行分组并对“度量”类非主关键字使用聚集函数进行计算分析。OLTP的SQL操作是查询或操作较少的数据行,查询有外键关系的多张表的极少量数据,达到访问最少的数据,产生最少的数据IO提供更好性能的效果。OLAP的SQL操作则是查询大量的数据行,进行聚集操作后,形成少量数据行的结果集。

在传统的关系型数据库里大量数据行之间的表连接操作,将带来巨大的资源消耗,因此,要在OLAP系统里实现较好的性能,尽量避免表连接,是一个值得考虑的解决办法。

维度建模(Dimensional Modeling)是OLAP应用设计中的一种数据建模方法。Kimball 最先提出这一概念,他的建模思想是:使用事实表、维表的形来构建OLAP系统的模型。这种方法最被人广泛知晓的名字就是星型模式(Star-schema)。

典型的星型模式,由一张事实表和多张维表构成,事实表中的维度列作为外键与维表中的主键形成表的关联关系。在事实表里的“度量”列,存储了OLAP应用里需要分析的数据,而“维度”列则表示了所需要分析的角度。一般情况下维度成员的个数相对来说比较少,因此维表的数据行数较少。在OLAP应用里,形于星形模式所产生的SQL语句,往往是大数据量的事实表和小数据量的维表进行表连接,因此不会在关系型数据库里产生犹如第三范式模型表连接所产生的巨大资源消耗。

在实际的OLAP系统设计中,常常会将数据分为两个层次:数据仓库(DataWarehouse)和数据集市(DataMart)。数据仓库存储是企业级全面的历史数据,而数据集市往往更加专注于具体应用。数据集市直接面向分析应用,数据仓库是为数据集市提供数据源。基于这样的设计,在实际工作中,往往在面向分析应用的数据集市采用维度建模方法,而数据仓库为了尽量少地产生数据冗余,占用更少的存储空间,选择采用第三范式建模方法。


已有(2)人评论

跳转到指定楼层
QQo0oBIQ 发表于 2015-1-22 23:49:53
艹,开始插入这么多广告,唉
回复

使用道具 举报

hb1984 发表于 2015-1-25 11:15:22
谢谢楼主分享。      
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条