数据仓库建模指南系列教程学习笔记

高质量数据建模的基本流程

概念模型确定系统边界,确定哪些做哪些不做

基本概念:实体、属性、域、关系、键、约束

---------实体-----------

六合分析法:5W1H

Who通常指与企业业务紧密联系的人员和组织

What通常指企业业务相关的“事”等

When更多的时候是以属性的模式出现的,而作为实体更多是以时间表的形式存在

Where指企业业务相关的地点,这个可以指具体的地点比如实体店,也可以指虚拟的网上商店

Why通常是指交易或者事件本身, 比如:销售、采购、订单等等

How通常是指你们通过什么形式去管理的,最常见的就是交易类的文档信息,去表示以及记录企业是如何完成交易的。比如:合同,协议,发票等等

IBM的Industry Model

安排,Arrangement-how

业务指导, business direction-how

相关方,Involved Party-who

产品(Product)-what

事件,Event-why

资源,Resource Item-what

位置,Location-where

分类,Classfication

按Pattern分

主实体(基本实体)

子类型实体

属性类实体

关联实体

---------属性、域-----------

ID用于标识实体唯一性的属性,一般都是主键

描述、引用、分类、限制、数量、时间相关、人物相关、地点相关、状态、审计、派生

域:自定义数据类型

  可以提高数据质量(通过域的定义,去建立用于检验数据合法性的规则,避免非法数据的插入)

  使数据模型容易理解,方便沟通

  使数据字段管理标准化

---------关系-----------

要根据需求来定模型的关系

介绍了一些PowerDesigner的使用

---------键-----------

候选键、主键、可选键、单键、复合键、代理键、自然键、外键

主键的特点:唯一不可重复、强制性不可为空、永久性不可改变、最小集合不可掺杂多余的属性

自然键:有商业含义

代理键:没有商业含义

在更新时,用代理键对于修改原有自然键更灵活多了

总体来说还是代理键性能更好一点

CHECKSUM CODE

纬度表、事实表?

在维度表中,存在代理键也必须存在1:1的自然键

---------约束(constrain)-----------

RI有几个选项:NONE、Resetrict、CASCADE、SETNULL、SETDEFAULT

****---------NULL-----------

NULL是需要谨慎使用的,因为它可能会带来一些数据质量的问题,以及会有一些不太容易被发现的程序的BUG

假如数据类型是整型或者浮点型,那么NULL不代表0, 0实际上还是有含义的,比如我考试缺考,那么成绩是NULL;我考试得了0分,他们的含义是不同的

假如数据类型是字符型,那么它也不是长度为0的字符串

NULL既不代表0,也不代表空字符串,而是未知或不适用

数据库在计算的时候会先检查是不是有null,如果有就直接得出结果就是null(数学计算中所有NULL参与的计算,最后的结果都是NULL)

NUll小总结:(一共有五种特点比较突出的隐患)

1. 数学运算:任何数字与NULL做数学运算均为NULL

2. Where子句:搞清NULL的含义,小心”<>”以及 “全选”

3. Join:NULL与NULLJoin没有结果

4. 聚合函数:若NULL设为0, AVG,MIN,MAX,COUNT均受影响

5. 子查询:当存在NULL时,使用not in时需要特别注意

数据仓库层面会分为三层:贴源层、按照第三范式创建的数据仓库层、为了实现分析需求的星型模式构建的数据集市层。

Null的场景处理:主数据表、参照数据表、Xref表、事务表

参考https://edu.hellobi.com/course/54

同一个字段,在不同表中的定义长度还有不同,这就带来了很多隐患,比如某些长度定义不够,字符串被截断这类问题

在设计之初,要考虑未来有哪些环境上的变化

时间: 08-03

数据仓库建模指南系列教程学习笔记的相关文章

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

[简明python教程]学习笔记2014-05-05

今天学习了python的输入输出.异常处理和python标准库 1.文件 通过创建一个file类的对象去处理文件,方法有read.readline.write.close等 [[email protected] 0505]# cat using_file.py #!/usr/bin/python #filename:using_file.py poem='''Programing is fun when the work is done use Python! ''' f=file('poem.

Webpack新手入门教程(学习笔记)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "PingFang TC Semibold"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0

Postman使用教程学习笔记

刚加入网页测试行列,最近在学习POSTman的使用教程,记录下学习笔记. Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.当开发人员需要调试一个网页是否运行正常,并不是简简单单地调试网页的HTML.CSS.脚本等信息是否运行正常,更加重要的是网页能够正确是处理各种HTTP请求,毕竟网页的HTTP请求是网站与用户之间进行交互的非常重要的一种方式,在动态网站中,用户的大部分数据都需要通过HTTP请求来与服务器进行交互.无论是web前端开发 或 android.ios开

01 3dmax基础教程学习笔记

学习笔记,如有错误请留言,谢谢 01 3dsmax界面介绍 02 界面UI布局 03 查看视点 04 视点显示控制 05 选择方法

简明Ptyhon教程学习笔记一

我们为什么要学Python? 简单:简单是最美的东西.Python就是一种简单的语言,Python可以使你专注于解决问题而不是去搞明白语言本身. 免费.开源:Python是开源产物,既不需要你购买他,也不需要你花钱去学习(它的简单足以让你自己就可以搞定). 高级语言:相比于C.C++这样的"高级语言",Python实在是太容易了,你不需要去考虑任何底层操作,只需要注重于你要完成的具体的功能. 可移植型:Python的高级特性让其代码并不依赖于平台,它不需要编译,只要你的平台有解释器,那

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第10章 | 充电时刻

第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简单的模块 #hello.py print ("Hello,World!") >>> import hello Traceback (most recent call last): File "<pyshell#56>", line 1, i

【学习笔记】Python基础教程学习笔记

教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")------>hahahah a = 100 print(a)----->直接打印a的值 a = 18 print("我的年龄是%d岁"%a)------>我的年龄是18岁 age = 18 high = 178 print("我的年龄是%d岁,我的身高是%dcm&quo

jfinal框架教程-学习笔记

JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java 语言所有优势的同时再拥有 ruby.python.php 等动态语言的开发效率!为您节约更多时间,去陪恋人.家人和朋友!(鼓掌!~~) JFinal 有如下主要特点: ?  MVC 架构,设计精巧,使用简单 ?  遵循 COC 原则,零配置,无 xml ?  独创 Db + Record 模式,灵活便利 ? 

UFLDL 教程学习笔记(四)

课程地址:http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/ 在之前的练习中,图片比较小,这节课的方法可以应用到更大的图像上. Fully Connected Networks 在sparse autoencoder(后面会讲到)中,一种设计选择是将输入层与隐藏层fully connect,这种方式对图片小的情况下计算量还 可以接受,但对大图片来说变得不可接受. Locally Conn