考虑以下形式的事实表:
CREATE TABLE Fact1
(
Dim1 int NOT NULL,
Dim2 int NOT NULL,
Dim3 int NOT NULL,
Data1 int NOT NULL,
Data2 int NOT NULL
...
)
Fact1
在每个维度上都有一个列索引。Dim1
假定为时间维度,粒度细至小时范围(例如,2011 年 3 月 12 日下午 2 点到 6 点之间)。在 Dim1中包含Dim2
和Dim3
覆盖列是否有用?或者同样在其中任何一个上?
更一般地说,将其他维度表 FK 列作为给定维度的索引上的覆盖列包含在内是否有用?
注意:对于事实表,我们假设不需要唯一标识给定的事实。因此,缺少主键或代理键。(Dim1, Dim2, Dim3) 始终是唯一的元组来保证唯一性。