基于MySQL的BBS设计(2)
3。数据库设计
*[a!k*uH-g$doSm0
f?zAF'ed6u0 关键还是mysql的效率问题,合理分配mysql的内存,特别是table cache的
l/`p%uV0大小。另外,当系统突然掉电呢?mysql是否robust?ITPUB个人空间O4ys+zv jx)MF
Z6i
table的名字设计,采用一位前缀表明类型,全部用小写表示(?),例如:
7G_;Je9v)ON8od0系统的数据库,以s为前导,如用户表:suser(sUSER 呢?),具体如下:
8j!y}3E%t[-y3}0ITPUB个人空间wBO9hDy
s :系统表,suser,sclassITPUB个人空间1Ed7?%a$fKK h5Z{
m :用户信件表,msysop,mdrangonITPUB个人空间II4e6` }a?z/GK@$^/e*Jq
w :用户消息表,wsysop,wdrangonITPUB个人空间Vw/]SE
a :版面索引表,alinux,acampus
:P u;j`` s.r?+R)~0b :版面文章表,blinux,bcampus
8J5s6[#mkW)Te0c :特殊分类版面表,cnewboardITPUB个人空间Z8e x h4S_Ojh
i :精华区索引表,ilinux,ilinux01,icampus,icampus04
m!Kn.z?9v0j :精华区文章表,jlinux,jcampus,ITPUB个人空间5Kb1Mzq/L3{JxP%q
8d l@OQq0X'X0 另外,是使用字串还是数字作为标识呢?例如,一个叫sysop的帐号,其
(p t(sns!C3?0id是1,他的信的表是msysop还是m00001呢?同样,一个叫campus的版,对应的ITPUB个人空间4M0ZY9{ q0@#S!Zr
代码是5,则这个版的文章的表名是bcampus还是b00005呢?可能用字串会容易ITPUB个人空间^uVSr4p j*KV]_
理解,查错吧。
/iz hr(L*v%`MF0
3W{ynO,Ak#wl4])f0用户信息表:suser
R"o0O$Thc0
As:c9~1lT \0usernum int unique, // 唯一标识符,最多30000个帐号,会不会太少了?
&UBC,Q"zF]4t W0userid char[20] primary key, // 排序的关键字,id,全小写。ITPUB个人空间0l;Nt8V xn
passwd char[20], // 密码,存放加密后的密文。ITPUB个人空间H Q;en,G;{9p
realid char[20], // 实际id,大小写混合。
X6t2wgA0username char[24], // 用户的泥称
&ye"F5UV:t-\nO0userlevel longint, // 64种权限?ITPUB个人空间C+L#Z$W6wU FNXX/w
numlogins int,ITPUB个人空间+j-MAS2[;f
numposts int,
,iV FB5Bg/JX0firstlogin time,ITPUB个人空间 Ah ?F0\1g vL
lastlogin time,