数据仓库系列3-键

数仓模型是非常重要的,模型中键又是重中之重。

今天简单讨论一下键。

候选键包含主键 和可选建,主键可以作为其它表的外键。

主键的生成方式分为两类:自然键和代理键。

主键都比较好懂,就是唯一键,重点说一下自然键和代理键。

自然键和代理键的有啥区别呢?

自然键是已经真实存在的键,通常具有商业意义,比如emploeeid,employee_name等,可以是单键也可以是复合键。

代理键通常没有商业意义,通常由系统自动生成,只能是单键。

在每个代理键为主键的表中,特别维度表,必定有自然键作为可选键,绝对不允许仅仅存在一个代理键而没有自然键的现象,因为代理键没有自然键就没有意义。

在设计模型中,一般需要考虑代理建作为主键,为啥呢?

1、在模型中如果如果自然键作为主键的话,有时会涉及到一些很多外键,如有需求需要修改主键,那么会引起一连串的反应。但是如果用代理键作为主键的话,因为代理键本身没意义,只需要修改代理键对应的自然健就ok了。

2、自然健为主键在新老系统合并中,比较困难,如果是代理键就比较简单了。

代理键绝对不可以对用户可见,通常是用来join,而不是where的搜索条件。通常情况下代理键的命名规则要规范,带有后缀,比如xxxx_sk等

主要原因呢,1、代理键毫无意义,暴露给用户会导致客户体验差。2、如果保存数据字典中,对于程序员根据名字就能很快的判断出是否是代理键,避免错误的使用。3、也是比较重要的一点,如果涉及到系统迁移,因为代理键都是自动生成的,会造成相同自然键的代理键不一致,造成混乱。

创建代理键的方法:

1、系统自动生成,比如序列号

2、ETL程序中max+1

3、创建一张维护表,通过表来维护

4、高低位法,xxx-yyyy,根据不同规则代表不用含义来表示

5、UUID,GUID mac地址+时间戳等。

代理键使用的其它场景

1、完全没有主键的数据表。

2、分布式结构数据库,多联合主键的事实表,为了分区方便,创建单独的代理键来避免数据的偏移等。

有时业务查询自然键频繁,需要两表关联时,可以把另外一张表的自然健,放到查询的这张表中,也就是逆规范化,先进行三范式规范化,再根据需求进行逆规范化。

先写这么多吧,其实还有代理键节省空间,查询效率比较高等。

时间: 2024-10-05 23:32:20

数据仓库系列3-键的相关文章

数据仓库系列之维度建模

上一篇文章我已经简单介绍了数据分析中为啥要建立数据仓库,从本周开始我们开始一起学习数据仓库.学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralph Kimball.Inmon和Kimball两种DW架构支撑了数据仓库以及商业智能近二十年的发展,其中Inmon主张自上而下的架构,不同的OLTP数据集中到面向主题.集成的.不易失的和时间变化的结构中,用于以后的分析;且数据可以通过下钻到最细层,或者上卷到汇总层;数据集市应该是数据仓库的子集;每个

数据仓库系列 - 缓慢渐变维度

在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要. 很显然在业务数据库中数据的变化是非常自然和正常的,比如顾客的联系方式,手机号码等信息可能随着顾客的所在地的更改发生变化,比如商品的价格在不同时期有上涨和下降的变化.那么在业务数据库中,

数据仓库系列--(1) 数据仓库普及

数据仓库介绍 良好的数据仓库设计是BI分析基石. 在企业看来,数据的两种形式:操作数据.分析数据.与操作型数据相对应的系统:联机事务处理[OLTP ],称为数据库:与后者相对应的系统:联机分析处理[OLAP],称为数据仓库[DW]. 数据仓库:支持管理决策过程.面向主题.集成.渐变.持久的数据集合. 与传统数据库不同,DW是多维数据库. 数据仓库存储的两个基本的元素是维度表和事实表. 事实表:是反映业务核心的表,表中存储了与该业务相关的关键数据,我们称其为"度量值",是今后用来计算及统

数据仓库系列之元数据管理

元数据(Meta Data),主要记录数据仓库中模型的定义.各层级间的映射关系.监控数据仓库的数据状态及 ETL 的任务运行状态.一般会通过元数据资料库(Metadata Repository)来统一地存储和管理元数据,其主要目的是使数据仓库的设计.部署.操作和管理能达成协同和一致.元数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的关键组件,贯穿了数据仓库的整个生命周期,使用元数据驱动数据仓库的开发,使数据仓库自动化,可视化. 构建数据仓库的主要步骤之一是 ETL.这时元数据

数据仓库系列2-基本概念

说起数据仓库,肯定得提到建模,建模就必须得知道一些基本的概念. 1.实体 实体顾名思义就是真实的东西,因为建模就是把实际的东西通过数据模型表达出来,所以呢实体通常是名词,比如人,商店,房间等,都可以是实体. 实体对应到数据库中呢,就是一张表.一般通过一张表来描述一份实体. 实体呢也有很多分类,通常情况下5w1h比较多点, who what when where why how 也可以用含义分类,根据不同的含义进行分类,比如产品,事件,资源,位置等. 也可以根据pattern来分类,比如主实体,子

Sql Server系列:键和约束

1. 约束的类型 约束可以分为3大类:实体约束.域约束和参照完整性约束. 1.1> 实体约束 实体约束都是关于比较行的,实体约束并不关心整体列中的数据,它只对特定行感兴趣. 1.2> 域约束 域约束处理一个或多个列,确保一个特定列或一组特定列满足特地的标准.在插入或更新一行时,域约束不考虑其他行.如限定UnitPrice列的值大于或等于0,这就是域约束. 1.3> 参照完整性约束 如果某列的值必须与其他列(该列可能在同一个表中,或者更通常的是在不同的表中)的值匹配,这就意味着创建了参照完

数据仓库系列4-范式2

前面讲了下3范式. http://www.cnblogs.com/wujin/p/6098676.html 在这里简单的介绍下BCNF,四范式,五范式 BCNF 也叫作3.5范式. 主要是任何属性都不能依赖于非主属性. 第三范式的基础上,第三范式是非主属性只能依赖于主属性,所以也就是主属性不能依赖于非主属性. 满足 1.联合主键 2.有候选键 例子: 班级 课程  教师 班级和课程是主键, 比如一个老师教一门课程,那么课程就依赖于老师,这种情况就是不符合BCNF 如果替换成 班级 教师 课程  

数据仓库系列文章

数据仓库元数据管理 OLAP的基本特征 维(Dimension)和立方(Cube) 数据立方体与OLAP 数据仓库的多维数据模型 数据仓库的基本架构 数据仓库的源数据类型 数据仓库的价值 出处:http://webdataanalysis.net/category/web-data-warehouse/

数据仓库系列-为什么要维度建模

凡是建设数据仓库,一定会提到维度建模方法.这一方法是Kimball最先提出的,其最简单的描述就是,按照事实表.维度表来构建数据仓库.数据集市.在维度建模方法体系中,维度是描述事实的角度,如日期.商品.地址等,事实是要度量的指标,如用户数.销售额等.按照一般书籍的介绍,维度建模还会分为星型模型.雪花模型等,各有优缺点,但很少直接回答一个问题,也就是数据仓库为什么要采用维度建模? 这个问题的基本判断在于,数据是否要开放给业务人员使用?采用维度建模构建出来的数据库结构表更加符合普通人的直觉.易于被普通