首页 百科知识 多维表的数据组织

多维表的数据组织

时间:2022-10-09 百科知识 版权反馈
【摘要】:由表4.1可以看出,关系数据库采用关系表来表达某产品在某地区的销售情况,而多维数据库中的数据组织形式采用了二维矩阵的形式。OLAP的多维分析视图就是冲破了物理的三维概念,采用了旋转、嵌套、切片、钻取和高维可视化技术在屏幕上展示多维视图的结构,使用户直观地理解和分析数据,得到决策支持。如果一个多维数据库不支持维的层次关系,那么维的多个层次必须分别作为不同的维。

4.3.3 多维表的数据组织

多维结构展现在用户面前的是一幅幅的多维视图。

假定你是一个百货批发销售商,有一些因素影响你的销售,如商品、时间、商店或流通渠道等。对某一商品,你想知道哪个商店和哪段时间卖得最好或卖得最差;对某一商店,哪个商品在哪段时间的销售最好;在某一时间,哪个商店的哪种产品买得最好或最差。因此,决策支持来帮助你制定销售政策。

这里,商店、时间和产品都是维。各个商店的集合是一维,时间的集合是一维,商品的集合是一维。维就是相同类数据的集合,也可理解为变量维。而每一个商店、每一段时间、每一种商品就是某一维的一个成员。每一个销售事实由一个特定的商店、一个特定的时间、一个特定的商品组成。

维有自己的固有属性:(1)层次结构,对数据进行聚合分析时要用到;(2)排序,在定义变量时要用到。这些属性对进行决策支持是非常有用的。

多维数据库可以直观地表现现实世界中的“一对多”和“多对多”关系。例如,我们希望存放一张销售情况表,假设有三种产品(冰箱、彩电及空调),它们在三个地方(东北、西北和华北)销售。用关系数据库来组织这些数据以记录方式线性存储,而用多维数据库则如表4.1所示。

表4.1  MDDB数据组织例表

img57

由表4.1可以看出,关系数据库采用关系表来表达某产品在某地区的销售情况,而多维数据库中的数据组织形式采用了二维矩阵的形式。显然,二维矩阵比关系表表达更清晰且占用的存储更少。

现在我们进一步讨论这两种表的差异。如果我们只是要查询像“冰箱在华北的销售量是多少”或“彩电在东北的销售量是多少”一类问题,以及其他只检索某一个数据列的问题,就不必把数据存入一个多维数组。但是如果查询“冰箱的销售总量是多少”这类问题,它是涉及多个数据项求和的查询。在使用关系数据库的情况下,系统必须在大量的数据记录中选出产品名称为“冰箱”的记录,然后把它们的销售量加到一起,这时系统效率必定大大降低。由于关系数据库统计数据的方式是对记录进行扫描,而多维数据库对此类查询只要按行或列进行求和,因而具有极大的性能优势。

多维数据库的响应时间仍然要取决于查询过程中需要求和的数据单元的数目,在使用时,用户希望不管怎样查询,都得到一致的响应时间。为了获得一致的快速响应,决策分析人员所需的综合数据总是被预先统计出来,存放在数据库中。例如,我们可以在关系数据库的表中加上一行总和的记录,用来记录各地区和各产品的销售总额。这张关系表中,由于已经预先对产品在各地区的销售量进行了求和(综合),查询时就不用再进行计算了。如果所求的总和都已经被综合的话,只要读取单个记录就可以回答按产品(或按地区)求和的问题了。这样处理就可以得到快速一致的查询响应。当数据库不算太大时,这种综合效果较好,但当数据库太大时,预先计算这些总和就要花费很长时间。另外,“总和”项破坏了列定义的统一语义,查询时用户必须了解这种约定。

多维数据库的优势不仅在于多维概念表达清晰,占用存储少,更重要的是它有着高速的综合速度。在MDDB中,数据可以直接按行或列累加,并且由于MDDB中不像关系表里那样重复地出现产品和地区信息,因此其统计速度远远超过RDBMS,数据库记录数越多其效果越明显。

我们很容易理解一个两维表,如通常的电子表格。对于三维立方体,我们也容易理解。OLAP通常将三维立方体的数据进行切片,显示三维的某一平面,图形很容易在屏幕上显示出来。若再增加一维,则图形很难想象,也不容易在屏幕上画出来。要突破三维的障碍,就必须理解逻辑维和物理维的差异。

OLAP的多维分析视图就是冲破了物理的三维概念,采用了旋转、嵌套、切片、钻取和高维可视化技术在屏幕上展示多维视图的结构,使用户直观地理解和分析数据,得到决策支持。

在多维数据模型中还有两个重要的概念是维的层次与类。维的层次是指某个可以存在细节程度不同的多个描述方面。MDDB中的维一般都包含着层次关系,可用一个树状层次图来表示。

如果一个多维数据库不支持维的层次关系,那么维的多个层次必须分别作为不同的维。这样做的弊端是增加了维的数目,而且,最后形成的数据库将会是一个非常稀疏的数据库。也就是说许多数据单元将不包含数据,例如,一个省包含许多城市,而一个城市仅对应一个省。如果将城市作为一维,省作为另一维,那么就会形成无法接受的稀疏数据矩阵。比如一个城市所对应的列中仅有一个有意义的数据单元,而其他的数据单元都是无意义的。

支持层次关系的多维数据库就不存在这样的问题。需要注意的就是正确地安排维的层次级别。

有关维的层次信息需要存放在元数据中,这样,系统在进行各种综合查询时,就能通过元数据的信息区分不同的维层次,从而正确地执行查询。

简化多维数据库的另一种方法是使用维内元素的“类”的概念。类是指按一定的划分标准对维成员全集的一个分类划分。这里的划分标准常常是像“规格”、“颜色”等描述实体典型特征的属性,我们称之为类属性。用集合论的概念来讲,设维的全体维成员为一个全集,则类就是该全集的一个划分。划分是指全集的这样一些子集,这些子集互不相交,但其和等于全集。对应一个类属性,就有对维成员的一个划分,类属性不同,得到的划分也不同。

维的层次和类是不同的两个概念,它们的区别主要在于:①层次和类表达的意义不同,维层次表达的是维所描述变量的不同综合层次,维成员的类表达的则是某一子集维成员的共同特征;②在层次和类上进行的分析动作不同。在维的层次上进行的分析主要有两种:从维的低层次到高层次的数据综合分析和从维的高层次到低层次的数据钻取分析。这两种分析都是跨越维层次的分析,表现在层次图中,按照维的层次关系进行的分析是对父子结点之间关系的分析,其分析路径就是层次图中从根到叶或者从叶到根的一条路径。

按照维成员的类进行的分析主要有两个目的:分类与归纳。首先选择某个类属性来对维成员的全集进行分类,然后再在分类的基础上归纳总结出类的共同特征(或一类区别于其他类的特征)。表现在层次图中,按照维成员的类进行的分析是对兄弟结点之间关系的分析,因而不可能跨越不同的维层次。

需要指出的是,在实际的数据分析应用中,往往是既要在维的层次关系上,又要在维成员的类上进行错综复杂的数据分析,这就要求将维的层次与类交叉、组合在一起,形成更为复杂的层次图。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈