基于mysql的bbs设计(二)


Posted in PHP onOctober 09, 2006

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
  // 是必然的。删除也是先做个标记。

  // 用户中的版面文章是否未读的数据比较繁,是否应该再建一堆的表
  // 才能实现呢?
  // 投票功能暂不考虑。。。。

PHP 相关文章推荐
FleaPHP的安全设置方法
Sep 15 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
PHP chr()函数讲解
Feb 11 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
基于mysql的bbs设计(三)
Oct 09 #PHP
支持oicq头像的留言簿(一)
Oct 09 #PHP
NT IIS下用ODBC连接数据库
Oct 09 #PHP
怎样在UNIX系统下安装php3
Oct 09 #PHP
怎样在UNIX系统下安装MySQL
Oct 09 #PHP
关于文本留言本的分页代码
Oct 09 #PHP
支持oicq头像的留言簿(二)
Oct 09 #PHP
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
javascript 触发事件列表 比较不错
2009/09/03 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
JavaScript中Function详解
2015/02/27 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
用Python抢过年的火车票附源码
2015/12/07 Python
Python File readlines() 使用方法
2018/03/19 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
大学生求职自荐信
2013/12/12 职场文书
教师节倡议书
2014/08/30 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android