目录
1、数仓建模的方法论
答:
1) ER模型
2) 维度模型
2、数据库的三大范式
在说三大范式之前,先说下函数依赖
① 完全函数依赖:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。
② 部分函数依赖:通过AB能得出C,通过A也能得出C,或者通过B也能得出C,那么说C部分依赖于AB。
③ 传递函数依赖:通过A得到B,通过B得到C,但是C得不到A,那么就说C传递依赖于A。
接着说三大范式
答:
1) 第一范式(1NF):核心原则:属性不可切割。每个属性的值不能是多个值的集合或列表,而应该是单个的数据项。
2)第二范式(2NF):核心原则:不能存在 "部分函数依赖" 。就是要消除部分依赖。
3)第三范式(3NF) :核心原则:不能存在" 不能存在传递函数依赖"。
3、什么是星型模型、雪花模型、星座模型
1)星型模型:
星型模型是一种数据仓库架构,用于组织和管理大量的数据。它以一个中心表为核心,周围围绕着多个维度表。中心表包含了核心业务事实,而维度表则包含了与事实相关的不同维度信息。在星型模型中,中心表和维度表之间通过外键关联起来,形成了一个星型的结构。中心表通常包含了事实的主键,以及与事实相关的其他属性。维度表则包含了描述事实的各个维度的属性,例如时间、地点、产品等。
2)雪花模型:
雪花模型是一种数据仓库架构,类似于星型模型,但在维度表之间引入了更多的规范化,使得维度表具有更高的规范性和标准化程度。在雪花模型中,中心表仍然是核心业务事实的表,而维度表则包含了与事实相关的不同维度信息。但与星型模型不同的是,雪花模型中的维度表可以进一步拆分成多个规范化的子表,形成一个类似于雪花的结构。这些子表通过主键和外键关联起来,以提高数据的一致性和效率。
3)星座模型:
星座模型是一种数据仓库架构,它综合了星型模型和雪花模型的特点。它既保留了星型模型的简单直观性,又允许维度表之间的规范化。在星座模型中,有一个核心事实表,周围则是多个维度表。与星型模型类似,事实表包含了核心业务事实的信息,而维度表包含了与事实相关的不同维度信息。不同于星型模型的是,星座模型中的维度表可以进行规范化处理,就像雪花模型一样,形成维度表的层级结构。维度表的规范化可以通过将其拆分成多个子表,以减少数据冗余和提高数据一致性。这些子表通过主键和外键关联起来,形成一个类似于星座的结构,其中核心事实表位于中心位置,周围则是多个维度表及其规范化的子表。
4、事实表的类型
1)事务型事实表
2)周期型快照事实表
3)累计型快照事实表
5、什么是事实表和维度表
1)事实表:
事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。其包含与该业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。
2)维度表:
度表是维度建模的基础和灵魂。前文提到,事实表紧紧围绕业务过程进行设计,而维度表则围绕业务过程所处的环境进行设计。维度表主要包含一个主键和各种维度字段,维度字段称为维度属性。
6、什么是维度退化,什么是缓慢变化维
1)维度退化 :
维度退化是在数据仓库中的一种现象,指的是原本应该作为独立维度存在的属性或字段,因为其取值数量有限且较少,而被合并到事实表中直接存储而不创建独立的维度表。
2)缓慢变化维:
缓慢变化维是指在数据仓库中的维度表中包含的属性值随着时间的推移而发生变化的情况。这些变化可以是实际的业务数据更新,或者是对维度属性的更正、补充或调整。缓慢变化维主要用于管理和处理维度表中的历史数据和变化信息,以便在数据仓库中准确地反映不同时间点的维度状态。
7、什么是拉链表,拉链表如何设计
拉链表:记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期。如果当前信息至今有效,在生效结束日期中填入一个极大值 (如9999-12-31 )。
拉链表的设计:
-
节点设计:每个节点通常包含两部分信息,即值和指向下一个节点的引用。可以使用类或结构体来表示节点,并定义相应的属性和方法。
-
头节点和尾节点:拉链表通常有一个头节点和一个尾节点。头节点用于标识链表的起始位置,尾节点用于标识链表的结束位置。可以在链表的构造函数中初始化这两个节点。
-
插入操作:向拉链表中插入新元素时,需要创建一个新节点并将其插入到合适的位置。具体插入方式可以根据需求选择,比如插入到链表的头部、尾部或中间某个位置。
-
删除操作:从拉链表中删除元素时,需要找到要删除的节点并将其从链表中移除。可以通过遍历链表查找匹配的节点,然后更新前一个节点的引用,将其指向下一个节点。
-
查找操作:在拉链表中查找特定元素时,可以使用循环遍历每个节点,逐个比较节点的值。如果找到匹配的节点,则返回该节点的索引或其他信息。
-
遍历操作:遍历拉链表意味着访问每个节点并执行相应的操作。可以使用循环迭代链表中的每个节点,以便对节点进行处理。
8、数仓分为哪几层?ods dwd dws ads dim
1)原始数据层(ods)存放未经过处理的原始数据,结构上与源系统保持一致,是数据仓库的数据准备区。
2)明细数据层(dwd)基于维度建模理论进行构建,存放维度模型中的事实表,保存各业务过程最小粒度的操作记录。
3)汇总数据层(dws)基于上层的指标需求,以分析的主题对象作为建模驱动,构建公共统计粒度的汇总表。
4)公共维度层(dim)基于维度建模理论进行构建,存放维度模型中的维度表,保存一致性维度信息。
5)数据应用层(ads)存放各项统计指标结果。
9、根据什么理论创建分层?或者根据什么进行建模?
创建分层:
1)访问模式理论:根据用户对数据的访问方式和频率来创建分层。根据查询的复杂性、请求的响应时间要求以及数据的可用性等因素,将数据分为不同层级,以便更快地满足不同用户的需求。
2)数据流理论:根据数据的流动路径和使用方向来创建分层。这可以通过识别数据在企业内部和外部之间的传输和流动,将数据分成源系统、集成层、操作层和报表层等不同层级。
3)业务需求理论:根据业务的特定需求和优先级来创建分层。根据不同业务部门或功能领域的数据需求,将数据分组并分层,以便更好地支持各种业务决策和分析。
进行建模:
1)事实建模:事实是指真实世界中的业务事件或活动,对于数据仓库来说,事实通常是指业务指标或度量,如销售额、订单数量等。事实建模是将事实与维度进行关联,形成事实表,并通过事实表记录和跟踪业务过程产生的各种度量。
2)维度建模:维度是描述业务事实的属性或特征,如时间、地理位置、产品、客户等。维度建模是以维度为核心,将事实表与维度表进行关联,通过构建维度模型来表示业务过程。
10、什么是数据域、什么是业务过程?
数据域:
在数据仓库中,数据域指的是一个特定的数据主题或业务领域。它是将数据按照业务功能或业务过程进行逻辑和物理划分的一种方式。数据域可以代表一个组织内的某个特定部门、业务流程、功能模块或者业务主题。例如,销售数据域、客户数据域、供应链数据域等。
业务过程:
业务过程指的是组织内部或跨组织之间完成特定业务目标所需的一系列相关活动和任务的集合。它描述了如何以一种有序和规范的方式执行各种业务操作,以实现预期的业务结果