我正在尝试了解 OLAP 和数据仓库,但我对关系建模和维度建模之间的区别感到困惑。维度建模基本上是关系建模,但允许冗余/非规范化数据吗?
例如,假设我有(产品、城市、# 销售额)的历史销售数据。我理解以下将是一个关系的观点:
产品 | 城市 | # 销售量 苹果,旧金山,400 苹果,波士顿,700 苹果,西雅图,600 橘子,旧金山,550 橘子,波士顿,500 橘子,西雅图,600
虽然以下是更立体的观点:
产品 | 旧金山 | 波士顿 | 西雅图 苹果, 400, 700, 600 橙子, 550, 500, 600
但似乎这两种观点都将在相同的星型模式中实现:
事实表:产品 ID、区域 ID、#销售额 产品维度:产品ID、产品名称 城市维度:城市ID、城市名称
直到您开始向每个维度添加一些额外的细节,差异才会开始显现。例如,如果您还想跟踪区域,关系数据库往往会有一个单独的区域表,以保持一切正常化:
城市维度:城市ID、城市名称、地区ID Region维度:Region ID、Region Name、Region Manager、#Regional Stores
而维度数据库将允许非规范化以将区域数据保留在城市维度内,以便更轻松地对数据进行切片:
城市维度:城市 ID、城市名称、区域名称、区域经理、# 区域商店
它是否正确?