论坛的帖子主题表:
TopicID
TopicTitle
TopicContent
TopicDate
UserID
LastReplyDate(最后回帖日期)
LastReplyUser (最后回帖人)
后面这2个字段留在帖子主题表里好不好,因为回帖表里也有这2个字段

解决方案 »

  1.   

    应该建两个表:
    1.表
    TopicID 
    TopicTitle 
    TopicDate //发贴日期
    UserID    
    LastReplyDate(最后回帖日期) 
    LastReplyUser (最后回帖人) 
    ReplyCount  //回贴数量2表
    id
    TopicID //和表1关联
    TopicContent //贴子正文,按回贴时间排序地一篇是主贴
    UserID 
    ReplyDate 回贴时间
      

  2.   

    应该建两个表: 
    1.主表 
    TopicID 
    TopicTitle 
    TopicDate //发贴日期 
    UserID    //发铁人
    TopicContent //贴子正文,按回贴时间排序地一篇是主贴 
    ReplyCount  //回贴数量 
    TID  //关联回帖表ID2.回帖表 
    Hid   //回帖ID
    Hdate  //回帖时间 
    Hcontent  //回帖内容
    UserID   //回帖人
    这样好点....个人意思
      

  3.   


    写错了个地方 
    TID  //关联回帖表ID 
    改成:HID  //关联回帖表ID 
      

  4.   

    我觉得还是看业务需求。for example:
    如果业务里面规定一个用户不能连续回复同一个帖子,那么我觉得这两个字段放在这里很有必要,免得去和回帖的表里面的用户比较了。
    如果没有这个业务,那我觉得放在这里也没有必要。正所以事事无绝对,还是灵活点。
      

  5.   

    补充下,CSDN就可以连续回复。
    希望可以拿分。
      

  6.   

    visual studio 2008 交流群:77763608
      

  7.   

    你更多的是查询,和展示给登陆用户看,这时候两个字段的冗余可以极大的提高速度,而删除帖子的时候毕竟是少数,而且这时候性能也多两个字段的联合查询对性能的影响也是可以接受的(而且和上面说的一样,只是显示:xxx回复已被删除,而不是把记录删除)。
      

  8.   

    感谢这个设计方案,仔细看了几个主流论坛的设计,其中discuz的表设计和这个原理一样。
    将帖子正文放在回帖表中可以极大的提高访问效率,虽然它违反了设计范式。嗯,思路整理出来了,那就是如上设计方案,同时删除的时候并不是真的删除,而是用一个字段来记录当前删除的状态,并不更新主表里的最后回帖人和日期。