关于维度表和事实表设计的两个问题
一,
在OLTP系统的某个综合查询中
的SQL语句如下:
SELECT SUM(F_1),SUM(F_2),AVERAGE(F_3)
FROM T_1
GROUP BY F_4,F_5,F_6
在设计数据仓库时,是否可以这样认为:
业务需求上可以出现在GROUP BY中的字段基本上就可以认为可以为每个字段建立一个维度表
SELECT 中可以进行SUM和AVERAGE的字段都放在事实表中
-----这个说法是否大致正确?-----
由于在OLTP系统中用户查看综合查询的数据时必然要能够看到明细数据和汇总数据
其中查看的明细数据必然包含大量不能汇总的数值信息,这些描述性的信息对用户来说也同样是至关重要的信息,例如单据编号,备注等
我在数据仓库设计中困惑的是这些无法进行汇总操作的描述性字段不知道如何处理
"数据仓库设计上就是面对这些可汇总的数值型字段的,不应该也无法提供不在维度表和事实表中的描述性的明细信息"
-----上面的这个说法是否正确?-----
如果不正确,
-----则,这些描述性的不可汇总的字段应该放在事实表中吗?还是应该做其他方式的处理-----
如果正确,
-----则,用户在使用的过程中会不会有这样的需求:用户发现一些数据异常,用户想查看构成这个数据的详细信息(这个信息在OLTP中是有的)-----
二,
维度表的记录应该有多条记录
那么在OLTP中有些信息是:男/女,采购/销售,授信/非授信,完成认定操作/未挖出认定操作等等
用户有时会用这些信息来进行分析数据
是否这些信息也需要建立一个维度表,
每个维度表中都只有两条记录
D_1:男/女
D_2:采购/销售
D_3:授信/非授信
D_4:完成认定操作/未完成认定操作
-----上面的说法对吗?-----
[解决办法]
个人意见:
1. SELECT 中可以进行SUM和AVERAGE的字段都放在事实表中
描述类信息可以放入数据仓库的事实表,这个取决于你的需求和设计
2. 如果需要从性别、类型等角度进行分析,就应该在逻辑上建立这些维度表,而这些表在物理上可以是一张数据字典表
[解决办法]
1楼说的有道理,但是对于楼主所说的下面问题,我认为是要根据业务需求和经验进行处理的: