Mysql多维数据仓库指南

第一篇基本原理

章节列表:

第1章:基本组成

第2章:维度历史

第3章:维度可加性

第4章:维度查询

本篇概述

你将运用关系数据库来实施一个维度数据仓库。事实表和维表这两种类型的关系表构成了一个数据仓库模式的基本部分,在本书的第一部分,你将用mysql数据库建立这些基本部分。

1:基本组成

 

概述

       本章将了解两个重要的主题:星型模式和代理键。星型模式是一种维度数据仓库的数据结构。代理键是在数据仓库中添加到事实表以作为主键的字段。

在本章你将开始一个关于建立真实数据仓库的漫长旅程。一些任务需要在本章完成:

n        建立一个数据库用户。

n        建立两个关系数据库,一个作为数据仓库,另外一个作为源数据库。

n        为数据仓库建立数据库表。

n        产生代理键:

你需要建立一个源数据库是因为你的数据仓库还没有源数据。实际应用中这一步并不是必要的,因为你的数据仓库很有可能是基于已有的数据源建立的。你将在本书的第二篇开始使用这个源数据库。

1星型模式

一个好的维度数据仓库需要有简洁的数据结构。从技术角度看,一个简洁的结构将意味着更快速的查询。在一个维度数据仓库,关系数据库的实施中有两种类型的表,事实表和维度表。事实表包含商业事实数据(或者称为度量值)。维度表包含查询该数据库的种类。

注意在看完本书前面两个章节后,你对事实表和维度表将有更好的理解。

这些表在数据仓库中的联系模式看起来象星星状,因此该模式的术语就称为星型模式。

注意除了星型模式外,雪花模式也会用于数据仓库中。但是较之星型结构,其建模更为困难。而且,雪花模式不容易理解和应用,而且其查询性能也低于星型模式。这些缺陷是雪花模式不适合建立维度数据仓库,因此本书只是涉及星型模式。

一个星型模式包含一个事实表,该事实表环绕着两个甚至更多的维表。单星结构只有一个事实表,而多星结构则是每个星有多个的事实表,另外,维度表可以为多个事实表所共享。本章只包括单星结构,读者将会在19章“多星模式”中学习到多星结构。

1-1 展示了一个单星结构的维度模式,这是一个我们将会在本书中扩展的销售订单的数据仓库。

 

图1-1一个单星型的维度模式

事实表名称的后缀通常是fact,而dim(维度dimension的缩写)通常用于维度表的后缀。根据这种命名规则,很明显,图1-1 中有一个事实表(销售订单事实表sales_order_fact)和四个维度表(客户维customer_dim,订单维 order_dim,产品维 product_dim, 以及日期维date_dim)。事实表包含一个或者多个可测的事实值(一个可以测的事实值简称为度量),而维表则对度量进行分类。

每个维表有且只有一个代理键字段,代理键字段名称的后缀是sk。维表中的每个代理键字段在事实表中都会有对应的相同的字段,这样使得数据库的查询更为容易。但是,事实表中以sk为后缀的字段并不是代表一个代理键字段。

图1-1中连接事实表sales_order_fact和四个维表的线指明了查询这些表的连接关系。这些连接是基于维表的代理键字段的。

当建立一个维度数据仓库的时候,你将会在数据仓库中自己产生代理键的值,这些代理键值不是从源数据得到的。代理键的值是连续的数值。

注意  后面关于“代理键”的章节将对代理键进行详细的说明。

现在你已经知道了星型模式,事实表,维表的概念,我们来看一个例子,如果我们对订单的订单金额感兴趣,并且决定用图1-1 中sales_order_fact表的order_amount字段作为度量。表1-1显示sales_order_fact表的一个抽样记录。

       1-1:一个事实表的抽样

将数据用电子表格形式展现:

customer_sk

product_sk

date_sk

order_sk

order_amount

1

1

1

1

1000

表1-1所关联的维表中相应的数据记录将在表1-2到1-5中展示。

表1-2:客户维表中关联的行

customer_sk

customer_no

customer_name

1

1

Dons Limited

表1-3:产品维表中关联的行

product_sk

product_code

product_name

1

1

Cangcung Hard Disk

表1-4:时间维表中关联的行

sk

date

1

2007–02–01

表1-5:订单维表中关联的行

order_sk

order_number

1

1

事实表的行说明该订单的金额是$1,000。这是事实的度量。sales_order_fact表中的customer_sk字段值为1表示对应customer_dim维表中customer_sk字段值为1的行这个关联表示,提交这个订单的是名为Dons Limited的客户。用事实表中的product_sk字段的值可以在产品维表中追踪到产品信息。通过将事实表和date_dim时间表的date_sk字段进行关联,你可以得到订单日期。同样,通过将事实表和order_dim订单维表中的order_sk字段进行关联,你可以得到订单号。

2代理键

 

       维表中的代理键字段是维表的主键。代理键的值通常是连续的数值而不代表任何商业意义。相比之下,许多来自源数据的键值都有商业含义。

你将在你的数据仓库内部产生代理键值;你不可以从源数据得到代理键值,在第2章“维度历史”中我将说明这么做的目的。

在mysql中,你可以通过设置代理键字段的AUTO INCREMENT自增属性产生代理值。通过将自增字段用null值代替来插入一个递增的整数。

已经有足够的原理让我们可以开始建立我们的数据仓库了。接下来的这节,“任务”阐述了你需要在本章完成的任务的详细步骤。

----------------------------------------------------------------------------------------------------------------------------------------------

原帖地址:http://blog.chinaunix.net/uid-43642-id-2124571.html

【转帖】Mysql多维数据仓库指南 第一篇 第1章的更多相关文章

  1. [译]PrestaShop开发者指南 第一篇 基础

    # 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...

  2. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

  3. MySQL运维工具

    Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...

  4. 《javascript权威指南》读书笔记——第一篇

    <javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...

  5. PADSPCB权威指南-第一章 PADS软件系统(部分)(原创)

    PADSPCB权威指南-第一章(部分)豆丁地址:http://www.docin.com/p-707128286.html

  6. 【OpenCV入门指南】第一篇 安装OpenCV

    http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...

  7. [翻译]现代java开发指南 第一部分

    现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobol语言,现 ...

  8. 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)

    Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...

  9. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

随机推荐

  1. safari 收藏导出 手机safari 导出

    safari 收藏导出 手机safari 导出 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.co ...

  2. BZOJ.3450.(JoyOI1952) Easy(期望)

    题目链接 /* 设f[i]为到i的期望得分,c[i]为到i的期望连续长度 则若s[i]=='x',f[i]=f[i-1], c[i]=0 s[i]=='0',f[i]=f[i-1]+2*c[i-1]+ ...

  3. Python3练习题系列(02)

    题目: 思考循环结构,看看它是怎样运行的,对我们认识程序有何益处. 知识点: list, for-loop, range 练习代码: 练习1 the_count = [1, 2, 3, 4, 5] # ...

  4. iOS主流机型更新

    主流机型更新后,舍弃了原有的iPhone 4 ,iPhone 4s, iPhone 5 ,iPhone 5s.增加了iPhone X,iPhone 8和iPhone 8 plus. 总体上屏幕趋于一个 ...

  5. unity无限循环报错的定位

    晚上遇到了,碰到了程序一运行就卡住的尴尬问题,然后百度下,看了看,Get到了一个新的skill. 1. 打开对应的VS程序,选择“调试/Attach Unity Debuger”菜单来调试代码. 2. ...

  6. vscode调试C/C++时支持查看定义查看引用

    貌似老版支持现在不支持了,需要自己加第三方工具,方法如下: 确保你安装了c/c++,此文写作时版本为0.20.1 从GTAGS官网下载Win32程序,解压,将其放在合适的位置,并把其目录下/bin文件 ...

  7. pycharm如何设置python版本、设置国内pip镜像、添加第三方类库

    直接上图(mac环境): 一.设置项目的python版本 File->Default Settings ... 在弹出的界面上(参考下图),左上角的下拉框里,选择python解释器的版本即可(建 ...

  8. C#模拟HTTP请求Post JSON

    前言 因为接口是http的,我们站点是https的,不能https直接ajax请求http,所以需要在SharePoint中开发一个模拟请求Ajax的Service,分享一下. var httpWeb ...

  9. Redis源码学习-Master&Slave的命令交互

    0. 写在前面 Version Redis2.2.2 Redis中可以支持主从结构,本文主要从master和slave的心跳机制出发(PING),分析redis的命令行交互. 在Redis中,serv ...

  10. js金额数字格式化实现代码(三位加逗号处理保留两位置小数)

    工作中很常用的东西: 例1,使数字1111111变成11,111,111.00,保留两位小数. <html> <head> <script type="text ...