论坛首页 Java企业应用论坛

这样的报表数据模型如何设计呢?

浏览 3744 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-06  
之前发了一篇多维数据模型设计的帖子,可能我没把问题描述清楚,所以没人回复。现在我将问题再详细描述一下,洗完能得到各位牛人的帮助。
现在公司有个关于报表平台的开发。附件中有个表样,不知道该如何存储,如何设计数据模型。先描述一下表样吧:
表头行方向的我们称之为维度:公司、项目、预算项;
表头列方向的我们称之为指标:实际和预算2项,实际、预算都有:面积、均价、金额三指标。还有差异比较及分析下的:本期增减额、年度完成率、本期完成率、是否需要差异分析等。
我们现在的想法是这样的:
设计一个事实数据表zgtj_tb_data_x 与一个组合维度表zgtj_tb_indx_x再加上若干个维度表sys_mid(项目、公司、预算项等维度)。
他们的结构以及他们之间的关系是这样的:
zgtj_tb_data_x:id,indx_id,FD_0,FD_1,FD_2.... --ID 主键;indx_id关联组合维度主键;FD_* 表示事实数据表中的事实数据字段(指标的概念,如:实际金额、实际面积、实际均价、预算金额、预算面积......);
zgtj_tb_indx_x:id,unit_code,prj_code,b_type_code,time_id --ID 主键;unit_code公司单位code;prj_code项目code;b_type_code预算项code;time_id时间周期
维度表有:
sys_unit_mid单位维度 unit_code,unit_name........
sys_prj_mid项目维度 prj_code,prj_name.......
sys_b_type_mid预算项维度 b_type_code,type_name....
sys_date_mid时间周期维度 time_id,sys_year,sys_month,sys_week,sys_day....
zgtj_tb_indx_x表结构是不固定的,它的结构取决于当前报表相关的维度,如:单位、项目、预算项、时间周期等。
zgtj_tb_indx_x_rel维度关联表 mid_code,mid_name,mid_table,sup_mid,mid_lvl。分别表示:维度code、维度名称、维度表、上级维度、维度级次
zgtj_tb_indx_x_rel维度关联表作用:
1、对zgtj_tb_indx_x表结构的一个描述,描述zgtj_tb_indx_x表中的维度项与实际维度表的一个对应关系
2、维度项之间的级次关系。如:单位维度下包含项目维度,项目维度下包含预算项。

上面介绍的现在数据模型。

下面说一下数据存储以及展示:
实际数据表zgtj_tb_data_x主要存FD_*的值,我这里把预算与实际分开都当指标处理的,其实也可以把它当做维度处理的(加一个预算类型维度,分实际与预算)。
数据在库里存储大家还是看数据表截图吧,这样更直观。

数据展示sql:
select 
a.f_price as '均价',
a.f_size as '面积',
a.f_cost as '金额',
b.b_unitcode as b_unitcode,
b.prd_code as prd_code,
b.prd_type as prd_type,
c.sys_year
from zgtj_tb_data_x a
left join zgtj_tb_indx_x b on b.sys_id = a.sys_id 
left join sys_date_mid c on c.date_id = b.date_id 
where c.sys_year=2007 or c.sys_year=2008
order by 
c.sys_year,b_unitcode,prd_code,prd_type


数据展示时分2部分:
先通过一个或者多个sql语句取出报表中第一列的数据--维度项的数据,然后执行取事实数据的sql(上面贴的sql),假如结构集有18条数据,因为一次查的是本年和上年的数据,所以可以确定本年与上年各9条数据(先不考虑数据行空的情况,如果无数据可以用join将NULL的数据也取出),将结果集分成2个list,按行循环分别填充到上年预算与本年预算对应的列上。

现在的问题:这么能将查询的结果集与报表上数据对应呢?如:写sql一次查出多列的数据,然后再按列的方式将数据写到报表上,这样按列写,以什么来确定列的位置呢。(注:这里的列数是不固定的,一个事实数据表中包含的列,先定义在一个数据表里的,报表的行数也是不定的,行数由各维度表的数据决定)。

上面是我考虑的一些问题,大家可以先对我的作法提出建议。我也没考虑考虑清楚,希望大家谈谈自己看法。期待更佳的存储方案。

写了这么多,对数据模型设计有兴趣的希望大家能看完。谢谢!。
  • 大小: 32.7 KB
  • 大小: 9.1 KB
  • 大小: 14.2 KB
  • 大小: 38.1 KB
  • 大小: 31.9 KB
   发表时间:2008-12-08  
很好,可惜我没看懂(我是新人,呵呵)
0 请登录后投票
   发表时间:2008-12-08  
不要太考虑报表样式而去设计资料库

要不会一直因为报表不好呈现,而一直修改资料表
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics