【转帖】Mysql多维数据仓库指南 第一篇 第1章
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
转载于:https://www.cnblogs.com/mybi/p/4188750.html
【转帖】Mysql多维数据仓库指南 第一篇 第1章相关推荐
- MySQL还能这样玩---第一篇之你所不知道的命令
MySQL还能这样玩---第一篇之你所不知道的命令 命令篇 DDL---表定义相关命令操作 show create table 表名 ---查看创建表的SQL语句 alter table 表名 mod ...
- SpringBoot SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 2.2 yaml 文件
SpringBoot [千锋教育java教程SpringBoot2全套,springboot快速入门到项目实战视频教程] SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 ...
- mysql维表的代理键字段_mysql多维数据仓库指南--第三篇第12章(2)
宾夕法尼亚州地区客户维 在本节我将用宾夕法尼亚州地区客户的子集维度来解释第二种维度子集的类型.我也将向你说明如何测试该子集维度. 相对的,一个向上钻取的维包含了它基础维的所有更高级别的数据.而一个特定 ...
- vue.js实战 第一篇 第七章 组件详解_组件通信
正向数据传递props <div id="app"><my-component message="来自父组件的数据"></my-c ...
- MySQL性能调优与架构设计——第4章 MySQL安全管理
第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...
- 第一篇【Python】基础-关东升-专题视频课程
第一篇[Python]基础-833人已学习 课程介绍 本书是智捷课堂开发的立体化图书中的一本,所谓"立体化图书"就是图书包含:书籍.视频.课件和服务等内容. 其中第 ...
- 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇
本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...
- MySQL 最全优化指南
MySQL 最全优化指南 当MySQL单表记录数过大时,增删改查性能都会急剧下降,所以我们本文会提供一些优化参考,大家可以参考以下步骤来优化: 一.单表优化 除非单表数据未来会一直不断上涨,否则不要一 ...
- MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南
MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...
- Mysql运维常用命令回顾整理
一.前景 Mysql作为开源数据库的中坚力量之一,虽然目前已被甲骨文收购,面临闭源风险,但是mysql扔是我们运维工作中最常面对的工作,那如何做好mysql运维工作,甚至做好mysql的基础运维,都是 ...
最新文章
- Atitit. . 软件命名空间与类名命名单词的统计程序设计v2
- burst tx 功能 开启_Serverspeeder 锐速config配置文件详解
- Android JNI开发流程介绍
- ORA-12638: 身份证明检索失败
- How to resolve empty table CRMATAB issue in ERP gt_crmtab[]
- 前端学习(2693):重读vue电商网站14之步骤条的使用与美化
- android 初始化语言,Android Init Language(安卓初始化语言)
- Linux综合练习——课件分发
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨5.35%
- 使用信号实现异步通知机制的例子
- 【免费毕设】PHP论文格式化系统(系统+论文)
- 电子版证件照怎么制作并改大小
- Java实现QQ、微信、新浪微博第三方登录
- # Vue 组件开发打包、Vue 项目打包、js库组件库打包使用
- 原生微信小程序下拉刷新和加载动画
- Makefile 文件中的:obj-$(CONFIG_TEST) += test.o,这一类的是什么意思?
- NOTEPAD++正则法则:第一个和最后一个
- rs422串口通讯c语言程序,RS232C/RS422/RS485串行通信标准
- 北京奥运会各国美女帅哥旗手
- ftp server - sftpgo_v2.2.2_windows_x86_64的简单使用
热门文章
- 华为 EC169 3G上网卡在MacPro中的使用
- 颜值牛逼惨了的swagger-UI
- Java 接入微信小程序-登录+支付完整流程实战(环境搭建+源码),网友:看完后秒懂!...
- 又被腾讯刷屏!果然是印钞机.....酸哭了...
- 爱了爱了!0.052 秒打开 100GB 数据,这个开源库火爆了!
- 你不知道的redis——主从复制,因为该命令redis作者曾摊上事
- 架构师必备!英特尔携手Science联袂推出“架构师成长计划”,来自阿里云、AWS、百度、顺丰、平安等头部大厂专家分享实战经验...
- 基于netty实现socketio的聊天室
- 你们公司的业务是部署在什么平台?
- 线性回归 - LinearRegression - 预测糖尿病 - 量化预测的质量