数据仓库系列3-键

elsearch elsearch     2022-08-14     228

关键词:

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

今天简单讨论一下键。

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

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

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

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

自然键是已经真实存在的键,通常具有商业意义,比如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、分布式结构数据库,多联合主键的事实表,为了分区方便,创建单独的代理键来避免数据的偏移等。

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

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

 

mysql8.0入门系列(代码片段)

...创建外键2.2.1、方式一2.2.2、方式二2.3、在外键约束下的数据操作2.3.1、添加数据2.3.2、删除数据2.3.3、删除外键约束2.4、外键约束-多对多关系🔥3、多表联合查询🔥3.1、准备查询数据3.2、交叉连接查询3.3、内连接查询3.4 查看详情

mysql8.0入门系列(代码片段)

...创建外键2.2.1、方式一2.2.2、方式二2.3、在外键约束下的数据操作2.3.1、添加数据2.3.2、删除数据2.3.3、删除外键约束2.4、外键约束-多对多关系🔥3、多表联合查询🔥3.1、准备查询数据3.2、交叉连接查询3.3、内连接查询3.4 查看详情

数仓系列第11篇:实时数仓

目录导读:1.数据仓库简介2.数据仓库的发展3.数据仓库建设方法论4.数据仓库架构的演变5.实时数仓案例6.实时数仓与离线数仓的对比导读:本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例... 查看详情

[数据仓库]-0023-独一无二的数据仓库建模指南系列教程升级版

2018最新最全大数据技术、项目视频。整套视频,非那种淘宝杂七杂八网上能免费找到拼凑的乱八七糟的几年前的不成体系浪费咱们宝贵时间的垃圾,详细内容如下,视频高清不加密,需要的联系QQ:3164282908(加Q注明博客园)。... 查看详情

数据仓库中的代理键与复合键

】数据仓库中的代理键与复合键【英文标题】:Surrogatekeyvs.compositekeyindatawarehouse【发布时间】:2014-05-1406:32:58【问题描述】:在数据仓库(DW)中,我们有维度和事实表。维度键作为外键迁移到事实表中,因此在事实表中形成了... 查看详情

数据仓库事实表外键生成

】数据仓库事实表外键生成【英文标题】:DatawarehouseFacttableforeignkeyGeneration【发布时间】:2021-12-2804:59:29【问题描述】:我是数据仓库设计的新手。我有一个如下所示的数据库。https://webpages.charlotte.edu/mirsad/itcs6265/group1/domain.html... 查看详情

数仓系列第11篇:实时数仓

目录导读:1.数据仓库简介2.数据仓库的发展3.数据仓库建设方法论4.数据仓库架构的演变5.实时数仓案例6.实时数仓与离线数仓的对比导读:本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例... 查看详情

大数据系列之数据仓库hive安装

...e主要分为以下几个部分?户接口1.包括CLI,JDBC/ODBC,WebUI元数据存储(metastore)1.默认存储在?带的数据库derby中,线上使?时?般换为MySQL驱动器(Driver)1.解释器、编译器、优化器、执?器Hadoop1.?MapReduce进?计算,?HDFS进?存储 前提... 查看详情

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

说起数据仓库,肯定得提到建模,建模就必须得知道一些基本的概念。1、实体实体顾名思义就是真实的东西,因为建模就是把实际的东西通过数据模型表达出来,所以呢实体通常是名词,比如人,商店,房间等,都可以是实体... 查看详情

greenplum实时数据仓库实践——实时数据装载(代码片段)

目录6.1建立数据仓库示例模型6.1.1业务场景1.操作型数据源2.销售订单数据仓库模型设计6.1.2建立数据库表1.在MySQL主库中创建源库对象并生成测试数据2.在Greenplum中创建目标库对象6.1.3生成日期维度数据6.2初始装载6.2.1数据源映射6.2... 查看详情

数据仓库设计 - 具有频繁变化的维度键的定期快照

】数据仓库设计-具有频繁变化的维度键的定期快照【英文标题】:Datawarehousedesign-periodicsnapshotwithfrequentlychangingdimensionkeys【发布时间】:2018-09-0815:40:12【问题描述】:想象一个事实表,其中包含一段时间内的度量总和,比如1小... 查看详情

带你学习不一样的数据仓库系列-框架概念(代码片段)

...者按:本系列文章参考总结自IBM,FaceBook,Google等数据仓库构建英文文章,部分章节为直译过来,部分内容加上乐哥6年陌陌,快手等工作经验总结而来,让大家了解真实国外大厂数仓构建之路,国外同行... 查看详情

带你学习不一样的数据仓库系列-框架概念(代码片段)

...者按:本系列文章参考总结自IBM,FaceBook,Google等数据仓库构建英文文章,部分章节为直译过来,部分内容加上乐哥6年陌陌,快手等工作经验总结而来,让大家了解真实国外大厂数仓构建之路,国外同行... 查看详情

离线数仓:什么是数据仓库

目录0.相关文章链接1.数据仓库概念2.数仓仓库为何而来2.1.操作型记录的保存2.2.分析型决策的制定2.3.OLTP环境开展分析可行吗?2.4.数据仓库的构建3.数据仓库主要特征3.1.面向主题性3.2.集成性3.3.非易失性3.4.时变性4.数据仓库、... 查看详情

greenplum实时数据仓库实践——实时数据装载(代码片段)

目录6.1建立数据仓库示例模型6.1.1业务场景1.操作型数据源2.销售订单数据仓库模型设计6.1.2建立数据库表1.在MySQL主库中创建源库对象并生成测试数据2.在Greenplum中创建目标库对象6.1.3生成日期维度数据6.2初始装载6.2.1数据源映射6.2... 查看详情

重新排序图表数据系列[关闭]

】重新排序图表数据系列[关闭]【英文标题】:ReorderingChartDataSeries[closed]【发布时间】:2011-07-0621:15:56【问题描述】:如何重新排序用于在Excel中创建图表的系列?例如,我转到图表,右键单击>选择数据。在左栏中,我看到系... 查看详情

greenplum实时数据仓库实践——数据仓库简介

目录1.1   什么是数据仓库1.2   操作型系统与分析型系统1.2.1操作型系统1.2.2分析型系统1.2.3操作型系统和分析型系统对比1.3抽取-转换-装载1.3.1数据抽取1.3.2数据转换1.3.3数据装载1.3.4开发ETL系统的方法1.4数据仓库架构1.4.1基本架... 查看详情

greenplum实时数据仓库实践——数据仓库简介

目录1.1   什么是数据仓库1.2   操作型系统与分析型系统1.2.1操作型系统1.2.2分析型系统1.2.3操作型系统和分析型系统对比1.3抽取-转换-装载1.3.1数据抽取1.3.2数据转换1.3.3数据装载1.3.4开发ETL系统的方法1.4数据仓库架构1.4.1基本架... 查看详情