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

 

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

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

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

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

六合分析法: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表、事务表

 

OLTP联机事务处理OLAP联机分析处理 的主要区别:

1)OLTP是面向顾客的,用于办事员、客户和信息技术专业人员的事务和查询处理;OLAP是面向市场的,用于主管、经理、分析人员的数据分析

2)OLTP管理当前数据;OLAP管理历史数据,提供汇总和聚集机制,并在不同的粒度层上存储和管理信息

3)OLTP采用实体-联系(ER)数据模型和面向应用的数据库设计;OLAP采用星形或雪花形模型和面向主题的数据库设计

4)OLTP主要关注一个企业或部门内部的当前数据;OLAP常跨数据库,并出来来自不同单位的信息,以及由多个数据库集成的信息

5)OLTP由短的原子事务组成,需要并发控制和恢复机制;OLAP大多是只读操作

 

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

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

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

posted @ 2016-08-04 17:14  python挖掘  阅读(2366)  评论(1编辑  收藏  举报