需求如下:
多个帐号集中到一个帐号中缴款,比如有ABCD等10个帐号集中到S这个帐号上去缴款,S与ABCD等就是1对多的关系,依此类推,也有其他的几个或者几十个帐号集中到又某一个帐号上缴款,如果只是简单的存储他们的关系,直接一个表,字段father_id, child_id两个即可,但是要考虑到此两个字段要修改,要新增加,要能实现顺序的对调(这个只针对child_id),在这种情况下,我的数据库要如何设计及页面如何实现才能比较?不知道大家做过类似的应用没有,有的话请不吝指教,没有的也可以谈你们的思路。我目前是让对方把关系整理好放在Excel中导入更新到数据库中,这样只要用到此两个字段即可,但是考虑到小变更都要重新整理关系再导入客户就不愿意了,最好还是要做成页面比较直观的增删改查操作,并能调整各个child_id的顺序,谢谢大家

解决方案 »

  1.   

    我感觉就直接用你这个表结构就可以,如果修改的话,就直接根据childe和fatherId删除这条数据就可以,然后重新插入!
      

  2.   

    删除肯定是没有问题,修改也没有问题,主要是在添加上面,你想下,如果我新增加的是要原来10个的中间或者其他位置,总之不是最后位置,此时我在页面上要求显示的顺序必须是按照规定的先后顺序,就目前的字段,新插入的数据只能是显示在最后,在这个基础上如果扩展一个字段顺序字段orderid,那批量插入的时候把这个值写出来再导入,如果是简单的12345这样的关系,在中间插入的话后面的就要全部顺序变化,如果以5 10 15 20这样的顺序,倒是可以插入时随意填个在某两值之间的值,但总感觉不是那么好,而且这两种总是会要求数据添加时要求给一个顺序值,这个值是多少往往会造成用户的疑惑
      

  3.   

    1.不知道你最后是不是用hibernate来操作数据库?
    如果是的话,你可以考虑下把你的child表设计成一个链表的形式。前一条记录保存后一条记录的id。2.另外一种方案,还是用现在的结构,加上orderid字段。
    其实插入数据的时候很简单,假设你要插得orderid=3,那先执行一条sql:
    update child set orderid=orderid+1 where orderid >=3
    然后插你的那条记录就行。相比较,其实后一种方式的编码量会更少,也更易实现。前一种方法还得递归调用。
      

  4.   

    在删除资料时,是否需要考虑修改OrderId???