一个项目已经完工,而且平稳运行了半年,之后由于数据源发生变化需要进行改造.
客户要求增加一张报表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:分多无用...散一点.
客户要求增加一张报表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;原则是:
一:源代码程序如果不是你写的,尽量不要修改,因为不熟悉的情况下(因为原开发人员不在),越修改,意味着bug出现的机会越多!二:生成系统上,重新部署代码,要牵涉的东西太多,而且必须在晚上业务量最少的情况下,因为很大可能要重启应用的。三:最好不要动T表的表结构,因为发现别的表会管理这张表,证明这T表极可能是基数据表。T表的变化会影响别的表的数据的!
方法2:加一个view,报表直接取view,不修改其它程序
方法3:在T表中加一个字段period,再写一个单独的procedure去UPDATE.
方法4:在T表中加一个字段period,修改生成T表的程序. 支持方法1和方法2
3,4绝对不可取,影响其他地方
我更倾向于方法2,在view上增加period列,报表直接取view,也便于其他报表直接引用该view,
并且如果逻辑需要更改,只需修改该view,其他地方不用变
个人支持方法一
因为如果要按period排序,分组什么的会很方便