高分求教,论坛数据库设计问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 05:31:36
我想弄个简单的论坛,要求帖子被回复后自动显示在前面,这样的话该如何设计数据结构呢,主要是排序检索上,如果id是主键,再以另一个字段排序的话,肯定是不理想的,请高人指点我一下吧!

我原来做的时候是把发帖和回复做在同一张表里面,设主键,还有一个副ID,当发新帖时,副ID为空,发表回复时,副ID的值=所回复的帖的那个主键的值,这样,检索副ID就能知道这条留言是新帖还是回复,并且知道他是哪张帖的回复,在这张表里面加一个获取时间的字段,在默认值里面加上获取时间 的语句:(getdate()) 。后面根据时间来排序。这是我当年的毕业射击,刚好过关。YEAH~~~~~

单数据表:
冗余一个更新时间字段,每次有回帖更新此时间。按照更新时间排序。

双数据表:
主表(存放帖子发起信息)
连接表(存放回帖信息)

连接表中多条字段对应主表一条字段。

主表(mainID,mainTopic,time,userName,userID,content...)
连接表(linkID,mainID,time,echoName,echoContent...)
以linkID为顺序列出主表条目。

创建个最后回复时间字段比如叫LDate,
则你的查询语句可以这样写select * from 表 order by LDate desc
desc就是按照时间倒排序.
下面是我用JSP写的个留言本的分页和按照时间排序,最后发的在最上面的一个例子,写的不怎么好,但是可以供你参考下.
package com.aztx.gb.listmsg;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.aztx.db.OperDB;

public class PageBean extends OperDB {
private int curpage ;//当前页
private int totalpage ;//总页数
private int perpage = 10 ;//每页显示的条数
private int nextpage ;//下一页
p