一个项目已经完工,而且平稳运行了半年,之后由于数据源发生变化需要进行改造.
客户要求增加一张报表R,报表R的数据源是T表...T表有一个beginDate字段和一个endDate字段.
报表R需要展现一个列是period,其值就等于(endDate-beginDate).其实问题很简单,但是项目组成员却意见不同.方法1:直接在报表里操作,不修改数据库.
方法2:加一个view,报表直接取view,不修改其它程序
方法3:在T表中加一个字段period,再写一个单独的procedure去UPDATE.
方法4:在T表中加一个字段period,修改生成T表的程序.项目背景:
1.报表工具是oracle的Discovery.
2.T表数据在100W左右.
3.还有其它报表需要基于T表的period列.
4.项目成员有变动,至少编写生成T表的程序(该程序十分复杂)的人目前不在项目里.
我是坚决选用方法1的,但其它人有不同看法...想看看大家的习惯.PS:分多无用...散一点.

解决方案 »

  1.   

    方法2:加一个view,报表直接取view,不修改其它程序
      

  2.   


    倾向于方法1以及方法2;原则是:
    一:源代码程序如果不是你写的,尽量不要修改,因为不熟悉的情况下(因为原开发人员不在),越修改,意味着bug出现的机会越多!二:生成系统上,重新部署代码,要牵涉的东西太多,而且必须在晚上业务量最少的情况下,因为很大可能要重启应用的。三:最好不要动T表的表结构,因为发现别的表会管理这张表,证明这T表极可能是基数据表。T表的变化会影响别的表的数据的!
      

  3.   

    方法2:加一个view,报表直接取view,不修改其它程序
      

  4.   

    方法1:直接在报表里操作,不修改数据库. 
    方法2:加一个view,报表直接取view,不修改其它程序 
    方法3:在T表中加一个字段period,再写一个单独的procedure去UPDATE. 
    方法4:在T表中加一个字段period,修改生成T表的程序. 支持方法1和方法2
    3,4绝对不可取,影响其他地方
    我更倾向于方法2,在view上增加period列,报表直接取view,也便于其他报表直接引用该view,
    并且如果逻辑需要更改,只需修改该view,其他地方不用变
      

  5.   

    直接在报表里面通过脚本把ENDDATE-BEGINDATE的值算出来不就好了么
    个人支持方法一
      

  6.   

    方法2:加一个view,报表直接取view,不修改其它程序   zhichi
      

  7.   

    很少用view, 所以选1,并且看起来这个修改并不复杂。  
      

  8.   

    倾向于第两种
    因为如果要按period排序,分组什么的会很方便