📅  最后修改于: 2020-11-27 07:11:29             🧑  作者: Mango
模式是整个数据库的逻辑描述。它包括所有类型的记录的名称和描述,包括所有关联的数据项和聚合。就像数据库一样,DW也需要维护一个架构。数据库使用关系模型,而DW使用星型,雪花和事实星座模式(Galaxy模式)。
在星型模式中,存在多个非规范化形式的维表,这些维表仅连接到一个事实表。这些表以合乎逻辑的方式连接,以满足出于分析目的的某些业务需求。这些架构是多维结构,用于使用BI报告工具创建报告。
Star模式中的维包含一组属性,事实表包含所有维和度量值的外键。
在上面的星型模式中,中心有一个事实表“ Sales Fact”,并使用主键将其连接到4维表。维度表未进一步规范化,表的这种连接在DW中称为“星型模式”。
事实表还包含度量值-dollar_sold和units_sold。
在“雪花模式”中,存在多个规范化形式的维表,这些维表仅联接到一个事实表。这些表以合乎逻辑的方式连接,以满足出于分析目的的某些业务需求。
Star模式和Snowflakes模式之间的唯一区别是维度表被进一步规范化了。规范化将数据拆分为其他表。由于在Snowflake模式中进行了标准化,因此减少了数据冗余而不丢失任何信息,因此变得易于维护并节省了存储空间。
在上述“雪花模式”示例中,“产品”和“客户”表被进一步规范化以节省存储空间。有时,当您执行需要直接在规范化表中处理行的查询时,它还提供了性能优化,因此它不处理主维度表中的行,而直接处理Schema中的规范化表。
表中的粒度表示表中存储的信息级别。数据的高粒度意味着数据处于事务级别或接近事务级别,这具有更多细节。低粒度意味着数据具有低信息水平。
事实表通常以较低的粒度级别设计。这意味着我们需要找到可以存储在事实表中的最低级别的信息。在日期维度中,粒度级别可以是年,月,季度,期间,星期和日期。
定义粒度的过程包括两个步骤:
尺寸变化缓慢是指属性值随时间变化。它是DW中的常见概念之一。
Andy是XYZ Inc.的员工。他于2015年7月首次位于纽约市。员工查找表中的原始条目具有以下记录-
Employee ID | 10001 |
---|---|
Name | Andy |
Location | New York |
后来他又搬到了加利福尼亚的洛杉矶。 XYZ Inc.现在应如何修改其员工表以反映此更改?
这称为“尺寸缓慢变化”概念。
有三种方法可以解决这类问题-
新记录将替换原始记录。不存在旧记录的痕迹。
尺寸变化缓慢,新信息只会覆盖原始信息。换句话说,没有历史记录。
Employee ID | 10001 |
---|---|
Name | Andy |
Location | LA, California |
好处-这是处理尺寸变化缓慢问题的最简便方法,因为无需跟踪旧信息。
缺点-所有历史信息都会丢失。
使用-当DW不需要跟踪历史信息时,应使用解决方案1。
新记录将输入到Employee维表中。因此,雇员Andy被视为两个人。
新记录将添加到表中以表示新信息,并且原始记录和新记录都将出现。新记录获得其自己的主键,如下所示:
Employee ID | 10001 | 10002 |
---|---|---|
Name | Andy | Andy |
Location | New York | LA, California |
好处-这种方法使我们可以存储所有历史信息。
缺点-桌子的大小增长得更快。当表的行数很高时,表的空间和性能可能会成为问题。
使用-当DW必须保留历史数据时,应使用解决方案2。
修改了Employee维度中的原始记录以反映更改。
将有两列指示特定属性,一列指示原始值,另一列指示新值。还将有一列指示当前值何时生效。
Employee ID | Name | Original Location | New Location | Date Moved |
---|---|---|---|---|
10001 | Andy | New York | LA, California | July 2015 |
好处-由于新信息已更新,因此不会增加表的大小。这使我们能够保留历史信息。
缺点-当属性值被多次更改时,此方法不会保留所有历史记录。
用途-解决方案3仅应在DW要求保留历史变化信息时使用。
规范化是将表分解为冗余程度较小的较小表而不会丢失任何信息的过程。因此,数据库规范化是组织数据库的属性和表以最小化数据冗余(重复数据)的过程。
它用于消除某些类型的数据(冗余/复制)以提高一致性。
通过将与对象类型相对应的表保留为简化形式,它提供了最大的灵活性来满足将来的信息需求。
它产生更清晰易读的数据模型。
数据库中查询的性能降低,因为必须执行联接才能从多个规范化表中检索相关数据。
您必须了解数据模型才能在多个表之间执行正确的联接。
在上面的示例中,绿色块内部的表代表红色块内部的表的规范化表。绿色块中的表冗余度较低,并且行数较少,而不会丢失任何信息。