在我的数据仓库案例中计算维数 table(s)

Figuring out number of dimension table(s) in my case of data warehouse

我是数据仓库的新手,所以请放轻松。

我试图计算出这种情况下的维数。

在我的交易数据库中:

在我的数据仓库数据库中,用户可能希望按位置或区域查找数据。

现在我希望在这种情况下创建维度 table(s)。

想知道我是否应该通过这种方式创建二维 tables(1 个用于位置,1 个用于区域)?

或者我应该以这种方式创建 4 个维度 tables(1 个用于位置,1 个用于区域,1 个用于位置区域关联,1 个用于区域位置关联)?

或者还有其他更有意义的方法吗?如果是,请告诉

在数据仓库世界中,这称为什么类型的关系,处理它的标准方法是什么?

谢谢

我会在同一维度(根据业务用途命名,例如 D_Location 或 D_Geography)对位置和区域建模。

小时数将在事实 table 和事实 table F_Hour 和 D_Location 将与代理键(Oracle 中的序列或标识在 Sql 服务器中)。

Region 和 Location 的所有描述性列都可以在 D_Location 中愉快地共存(当然 Region 不会被规范化,但这是通常的做法)。

我认为您不需要在维度 table 中跟踪位置和区域的关联。该关联可以是事实 table。

我会创建 2 个维度 tables D_Location & D_Region 和 1 个事实tableF_Hour

D_Location:

location_code int not null primary key, short_description varchar(10) not null, long_description varchar(100) not null

D_Region:

region_code int not null primary key, short_description varchar(10) not null, long_description varchar(100) not null

F_Hour:

hour_id int not null primary key, location_code int not null, region_code int not null, hours decimal(10,2) not null

F_Hour 将有 1 个 FK 到 D_Location 和 1 个 FK 到 D_Region

获取特定 location_code 的小时数 (@location_code):

select h.location_code, l.short_description, l.long_description, sum(h.hours) 
from F_Hour h inner join D_Location l on h.location_code = l.location_code 
where h.location_code = @location_code 
group by h.location_code, l.short_description, l.long_description 
order by h.location_code

获取特定 region_code (@region_code) 的小时数:

select h.region_code, r.short_description, r.long_description, sum(h.hours) 
from F_Hour h inner join D_Region r on h.region_code = r.region_code 
where h.region_code = @region_code 
group by h.region_code, r.short_description, r.long_description 
order by h.region_code

有道理吗?