基于MySQL数据库的论坛设计方案

时间:2009-03-30   来源:   网友评论:0   人气: 573 作者:

基于MySQL数据库的论坛设计方案

1。系统架构:

  采用模块化思想,分为3层:

  a。数据存储层:使用MySQL来存放bbs的所有数据,包括用户信息,文章数据,用户信件,用户消息,系统数据(?),关键问题: 数据库的规划,是否用文件来辅助。

 

  b。系统功能层:完成bbs的基本功能,由多个并列模块组成,向下调用mysql的函数访问数据库,向上,接受处理请求,将处理的结果返回上层,根据请求类型,返回成败结果和其他数据。而且模块高度灵活,可以方便的修改增加。包括:

  ** 用户模块,处理用户的注册,基本数据的修改,权限的变化,网友信息的查询。

  ** 版面模块,完成文章发表,文章的读取,文章的删除,文章的加标记,读改删权限检查,此模块对数据库的要求最高。

  ** 精华区模块,包括精华区的文章,目录的增加,删除,上下移动

  (?)读改删权限检查,目录结构是其中的难点。

  ** 信件模块,包括发新信件,读删信件,信笺标记,新信件的通知

  ** 消息模块,包括发送消息,接受消息,新消息通知,消息回顾,消息存信件。

  ** 系统动态模块,包括当前上站人数,当前动态,由于变动频繁,此类数据用共享内存实现可能更好。

  ** 聊天模块,双人聊天是否能借鉴icq的做法,由双方直接通话,但聊天结果存信件可能较麻烦,同时,为兼容telnet功能,当上层服务层为telnet时,增加专门的模块来进行处理。

  ** 聊天室模块,利用共享内存还是数据库?开房间,里面的权限问题。根据需要,还能增加新的功能。例如:活动看板模块,但对于非telnet终端,意义好象不大。。。。。

  3。数据库设计

  关键还是MySQL的效率问题,合理分配mysql的内存,特别是table cache的

  大小。另外,当系统突然掉电呢?mysql是否robust?

table的名字设计,采用一位前缀表明类型,全部用小写表示(?),例如:

  系统的数据库,以s为前导,如用户表:suser(sUSER 呢?),具体如下:

  s :系统表,suser,sclass

  m :用户信件表,msysop,mdrangon

 

  w :用户消息表,wsysop,wdrangon

  a :版面索引表,aLinux,acampus

  b :版面文章表,blinux,bcampus

  c :特殊分类版面表,cnewboard

  i :精华区索引表,ilinux,ilinux01,icampus,icampus04

  j :精华区文章表,jlinux,jcampus,

  另外,是使用字串还是数字作为标识呢?例如,一个叫sysop的帐号,其

  id是1,他的信的表是msysop还是m00001呢?同样,一个叫campus的版,对应的

  代码是5,则这个版的文章的表名是bcampus还是b00005呢?可能用字串会容易

  理解,查错吧。

  用户信息表:suser

  usernum int unique, // 唯一标识符,最多30000个帐号,会不会太少了?

  userid char[20] primary key, // 排序的关键字,id,全小写。

  passwd char[20], // 密码,存放加密后的密文。

  realid char[20], // 实际id,大小写混合。

  username char[24], // 用户的泥称

  userlevel longint, // 64种权限?

  nUMLogins int,

  numposts int,

  firstlogin time,

  lastlogin time,

  staytime time, /* 总共停留时间 */

  lasthost char[32],

  email varchar[100],

  address varchar[100],

  // 还需要其他数据吗?是否需要留出一定的保留值,以后alter table来

  // 增加新的字段时,效率如何?

  版面分类表:sclass

  classnum int unique, // 分类标识

classid char[20], // 分类的英文id:computer

  classname varchar[100],// 分类的中文描述:电脑世界

  classtable char[20], // 特殊分类对应的版面表

  // 一般来说,每个版面只属于一个分类,对于特殊分类,例如拳头版块,


 

文章评论