【发布时间】:2011-02-25 10:13:12
【问题描述】:
我正在使用 RDBMS 构建一个穷人的数据仓库。我已确定要记录为的关键“属性”:
- 性别(真/假)
- 人口统计分类(A、B、C 等)
- 出生地
- 出生日期
- 体重(每天记录):正在记录的事实
我的要求是能够运行允许我执行以下操作的“OLAP”查询:
- '切片和骰子'
- “向上/向下钻取”数据和
- 一般来说,能够从不同的角度查看数据
在阅读了这个主题领域之后,普遍的共识似乎是最好使用维度表而不是规范化表来实现。
假设这个断言是正确的(即解决方案最好使用事实和维度表来实现),我想在这些表的设计中寻求一些帮助。
“自然”(或明显的)维度是:
- 日期维度
- 地理位置
具有分层属性。但是,我正在努力为以下字段建模:
- 性别(真/假)
- 人口统计分类(A、B、C 等)
我在这些领域苦苦挣扎的原因是:
- 它们没有有助于聚合 (AFAIA) 的明显分层属性 - 这表明它们应该在事实表中
- 它们大多是静态的或很少更改 - 这表明它们应该在维度表中。
也许我上面使用的启发式方法太粗糙了?
我将给出一些关于我想对数据仓库执行的分析类型的示例 - 希望这将进一步澄清事情。
我想按性别和人口统计分类汇总和分析数据 - 例如回答以下问题:
- 男性和女性的体重在不同的人口统计分类中有何不同?
- 哪个人口统计分类(男性和女性)显示本季度体重增加最多。
等等
谁能澄清性别和人口统计分类是否属于事实表的一部分,或者它们是否(我怀疑)是维度表?
还假设它们是维度表,有人可以详细说明表结构(即字段)吗?
“显而易见的”架构:
CREATE TABLE sex_type (is_male int);
CREATE TABLE demographic_category (id int, name varchar(4));
可能不是正确的。
【问题讨论】:
标签: sql database-design data-warehouse olap