看到这个贴子:http://bbs.csdn.net/topics/70369356 第16楼的想法不错。但是我现在要的需求不止是发短信,还要有回复,那这个回复以及回复后的短信是如何去向呢?比如:A发短信给B,那么这条短信同时保存在A的发信箱和B的收信箱(此短信的发信人是A,收信人是B),当B回复短信后,此短信的发信人和收信人要改变吗(如果A再追问,B再回复.....这样的收信人和发信人会不会乱套?)?B的发信箱会保存到这条短信吗(按理说此短信最初不是收B发出的,应该不会保存)?当B回复后,在B的收集箱里此短信的内容会发生怎样的变化 及 此短信是否会出现在A的收信箱?如果是出现在A的收信箱,那之前在A的发信箱里的此短信会有什么变化?有高人帮我设计出这样的数据库 以及 相关的流程吗?

解决方案 »

  1.   

    短信和回复的关系就是树状,短信内容本身是根节点(相对于每一条短信来说,多条短信将会有多个这种“根节点”),所有回复是1级节点我觉得可以存入同一个表,有一个字段代表父id,短信没有父ID,也可默认为0,其他回复的父id指向短信记录的id。毕竟只有2层节点,不复杂,查询速度应该也不会太慢
      

  2.   

    网上查下树形结构的建表构造,字段多个 fathcerId(父节点),level(层数)就可以了
      

  3.   

    b1.短信表
    标题
    内容
    创建时间b2.状态表 (收件箱)
    发信人ID
    收信人ID
    短信ID
    上一条短信ID
    初始短信ID
    收信时间我是矮人
    基本http://bbs.csdn.net/topics/70369356 第16楼的想法改造 收件箱增加‘上一条短信ID’,以及‘初始段行ID’,如果需要删除,收件箱增加一个删除标示就行。
    逻辑如下, 
      第一次 A发给B,发信任A,收信人B,,b1,b2各增加一条数据。b2数据中,上一条短信ID为 -1,初始短信ID=短信ID =N1
      B回复, ,b1增加回复短信信息,b2增加数据,发信人B,收信人A,同时上一条段行ID=初始短信=N1,短信ID=N2
      A继续回复,b1继续增加短信信息,b2增加数据,发行人A,收信人B,同时初始短信=N1 ,上一条短信ID为N2
      以此类推,原则是将回复等都做一条段里的数据存在,通过b2表配置短信之间的联系.上一条短信的作用是为了建立完整的树形结构;
    初始短信ID,是为了方便一次行查询整个短信的发送/回复数据。A的收件箱只显示收件人为A的短信,B同样,发件箱同理如果短信段单条显示(发送,回复都做为单一的数据显示,类似2G手机),以上条件满足。
    如果短信多条显示(将整个树形结果显示出来),则入口通过查询上一条短信ID为-1,获取到每一个树形结构的头节点。
    linux上的输入法有点别扭,输入错误的地方见谅。