不明白为什么要帐户1、帐户2、...、帐户n这么划分,同一个ClientID在不同的表中都对应有记录?如果不存在多级帐户关联关系,我觉得按照主帐户--分帐户两级划分就可以了
至于帐户类型可以用一个类型字段描述,为了交易类型的扩展性,可以考虑建立一个交易类型字典表[帐户类型字典表]
AccountTypeID
AccountTypeDesc
...其他信息字段[主帐户表]
ClientID
...其他信息字段[分帐户表]
ClientID
AccountTypeID
Balance
...其他信息字段[历史表]
ClientID
AccountTypeID
Deposit
Disbur
<Balance字段可以考虑取消,因为这个字段可以通过Deposit和Disbur计算得出>
当然,如果对应有一个ClientID开通多项卡业务的情况,那么在以上的结构上再作出如下调整:
增加卡业务字典表,在主帐户与分帐户之间增加一个卡帐户表[卡业务字典表]
CardTypeID
CardTypeDesc
...其他信息字段[卡帐户表]
ClientID
CardTypeID
CardNO
...其他信息字段
帐户类型字典表增加卡业务类型字段,用于描述该帐户类型所归属的卡业务类型
[帐户类型字典表]
CardTypeID
AccountTypeID
AccountTypeDesc
...其他信息字段
注:以上设计不能解决同一个ClientID在多次开通同一个卡业务类型的情况,即在原帐户1、帐户2、...、帐户n表中与ClientID存在多对一的情况

解决方案 »

  1.   

    to  libin_ftsafe:
    之所以在 同一个ClientID 下分产生不同的帐户,是因为在同一个 ClientID 下可以办理多种卡项,即实现多种业务类型,而每一种业务类型的性质和字段也不一样。非常谢谢你提出的观点!!!
      

  2.   

    Sorry,表设计这一块,经验久缺。帮你UP
      

  3.   

    to  libin_ftsafe:
    之所以在 同一个ClientID 下分产生不同的帐户,是因为在同一个 ClientID 下可以办理多种卡项,即实现多种业务类型,而每一种业务类型的性质和字段也不一样。--------------------------------------------------------多种卡项之间是否存在业务类型的交叉,比如A类卡有BGive 业务类型,B或C乃至Z类卡是否也有一个BGive业务类型
    如果没有,那可以在业务类型字典表里把卡类型及其相关业务类型的对应关系直观的体现出来CardTypeID
    BusinessTypeID
    BusinessTypeDesc
    而在历史表中以及分帐户表中,只需要保存BusinessTypeID,就可以知道是那一种卡项的业务数据
    如果存在交叉,也完全可以同名的业务类型BGive分别用不同的BusinessTypeID对应到不同的CardTypeID,这与楼主的需求并不矛盾
      

  4.   

    我理解的帐户1和帐户2是记录的ClientID的不同业务,没有主次之分,应该是并列的关系,所以我觉得
    楼主的表结构设计的非常好。特别是历史表,也方便查询。是不是要在帐户1或某个帐户表发生变化时就马上更新历史表,那要看你查询历史表的时实性,如果实时性要求不高,是否可以考虑用job一天定时做一次.
      

  5.   

    to libin_ftsafe(子陌红尘) :
       你的想法较科学性,实现起来感觉有点棘手to didoleo(冷月无声):
       谢谢你意见!要求实时性的.即 某一 ClientID 下的 任一帐户(帐户1,帐户2...)表中的数据发生改变时都要将 更新的明细如实地写入到 历史表 ! 我是想当 某一帐户(帐户1,帐户2...)表的数据在 UPDATE 时,通过触发,将数据写到 历史表 ,但不知道 触发是否安全及能保证数据完整性???to yorbo(波波):
       呵呵,我不是 张有威 !