医院业务工作流中有一张申请单,上面记录了本次住院病人的基本信息和需要冲负的费用项明细。
设计申请表的时候,我将病人的基本信息,包括姓名,性别,出生日期,本次住院的病情等数据都设计在申请主表中。提交给dba的时候,他却说这样设计是数据冗余,只需要在申请主表中保留病人主索引id和住院的主id即可,数据展示的时候再去关联病人信息表和住院信息表。我们医院的病人主索引表和住院信息表都是大表,几百万上千万条数据,从建库到现在都没有做过归档分割,虽然主键有索引,但是也不应该这么干啊。而且申请单是个快照单据,创建单据的时候就该保存当时的完整信息,至于工作流流转当中信息发生变化,都以当时申请提交的数据为准,改成关联的话,以后数据有变化,比如病人改名,销户或者住院信息变更,我这张申请单的数据显示都得跟着变。大家讨论下怎样设计才合理?

解决方案 »

  1.   

    纯文字看着有点累啊..   
    看了三遍还是没搞清楚现状是什么样的.   只看懂了需求是 加一个 申请主表...如果你认为你有些信息在申请主表,不应该随着病人的信息改变而更新,那么你这样冗余就是有道理的.  你也发现这个问题了.所以应该向DBA咨询一下这一点要怎样处理呀...
      

  2.   

    可以在打印那里调用的时候添加一个过程的调用。重建一张表进行存储打印数据。
    过程里面,将需要打印的那些参数字段insert/update到那张表里面
    查询申请单的时候也是查这张表
      

  3.   

    这是个很古远的话题,是保留适当冗余,还是想去遵循标准范式。
    没有一个明确的标尺衡量谁对谁错。
    DBA应只是提建议,而非拘泥于某些规范。
    更多的应该是从业务出发,如果冗余的数据很少发生变化,或者不用联动更新,适当的冗余能提升开发的效率。未尝不可。