浏览 3743 次
锁定老帖子 主题:这样的报表数据模型如何设计呢?
精华帖 (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一次查出多列的数据,然后再按列的方式将数据写到报表上,这样按列写,以什么来确定列的位置呢。(注:这里的列数是不固定的,一个事实数据表中包含的列,先定义在一个数据表里的,报表的行数也是不定的,行数由各维度表的数据决定)。 上面是我考虑的一些问题,大家可以先对我的作法提出建议。我也没考虑考虑清楚,希望大家谈谈自己看法。期待更佳的存储方案。 写了这么多,对数据模型设计有兴趣的希望大家能看完。谢谢!。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-08
很好,可惜我没看懂(我是新人,呵呵)
|
|
返回顶楼 | |
发表时间:2008-12-08
不要太考虑报表样式而去设计资料库
要不会一直因为报表不好呈现,而一直修改资料表 |
|
返回顶楼 | |