基于mysql的bbs设计(二)
author:一佰互联 2019-05-01   click:138
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],  // 特殊分类对应的版面表   // 一般来说,每个版面只属于一个分类,对于特殊分类,例如拳头版块,   // 新版面,可以用专门的表来描述   版面表:sboard   boardnum  int unique,   // 版面的标识(需要吗?)   boardid   char[20],    // 版面的英文名   boardname  varchar[100],  // 版面的中文名   boardclass char[20],    // 版面所属分类   boardsysop varchar[100],  // 斑竹名单   boardposts int,      // 版面的文章数   boardlevel int,      // 版面的读写权限   indextable char[20],    // 版面对应的索引表的名称:aboardid?   texttable  char[20],    // 版面对应的文章表名称:  bboardid?   // 最后两项有没有必要出现,是否可以作为必然对应关系,还是允许   // 出现更大的灵活性?另外版面的大小写问题是否可以直接默认   // 只开头字母大写,   特殊分类版面表:snewboard, sstarboard   boardid   char[20],  // 版面的id   // 这样的表有必要吗?   版面索引表:acampus,alinux,afootball。。。。。。   id   int,      // 文章序数,要手动调整????   mark  char[1],    // 文章标记,m,g,b,d。。。。   title  varchar[100],  // 文章标题   writer char[20],    // 文章作者id   posttime time,     // 发表时间   textnum  longint,   // 对应的编号???不调整   版面文章表   textnum   longint,  // 文章编号?   textword  text,    // 文章内容?   // 有必要将索引和文章内容分开吗?从效率上看,况且lazy flush   // 是必然的。删除也是先做个标记。   // 用户中的版面文章是否未读的数据比较繁,是否应该再建一堆的表   // 才能实现呢?   // 投票功能暂不考虑。。。。