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