基于MySQL的BBS设计(2)

上一篇 / 下一篇  2008-05-09 17:23:26

3。数据库设计
*[a!k*uH-g$d oSm0
f?zAF'ed6u0  关键还是mysql的效率问题,合理分配mysql的内存,特别是table cache的
l/`p%uV0大小。另外,当系统突然掉电呢?mysql是否robust?ITPUB个人空间O4y s+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的帐号,其
(pt(sn s!C3?0id是1,他的信的表是msysop还是m00001呢?同样,一个叫campus的版,对应的ITPUB个人空间4M0ZY9{ q0@#S!Zr
代码是5,则这个版的文章的表名是bcampus还是b00005呢?可能用字串会容易ITPUB个人空间^ uVSr4p j*KV]_
理解,查错吧。
/izhr(L*v%`MF0
3W{y nO,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 FB5B g/JX0firstlogin time,ITPUB个人空间Ah?F0\1g vL
lastlogin time,
CB#IQuq@0staytime time, /* 总共停留时间 */
hu2n2R8h#W+|%{0lasthost char[32],ITPUB个人空间V'Y H%D FQB L
email varchar[100],ITPUB个人空间R;b z Eq[
address varchar[100],ITPUB个人空间&])H#b0^$B*d}o

2L]z9U'o:]!y0// 还需要其他数据吗?是否需要留出一定的保留值,以后alter table来
_uXL]k:XGg0// 增加新的字段时,效率如何?
~ h4q5g?;d&b0ITPUB个人空间rX4c'p%m{@0Ek l
版面分类表:sclass
+{ U-`N AH]0ITPUB个人空间c#E3W A3V,i3L
classnum int unique, // 分类标识ITPUB个人空间IgM(~d
classid char[20], // 分类的英文id:computerITPUB个人空间q:]0fLl{lFn#s
classname varchar[100],// 分类的中文描述:电脑世界
m5R\1zu{ f"U8t2|[@0classtable char[20], // 特殊分类对应的版面表
U]^:[JBjn)q,U0// 一般来说,每个版面只属于一个分类,对于特殊分类,例如拳头版块,
q4G&l&M V l4Z*x0// 新版面,可以用专门的表来描述ITPUB个人空间_5ZeG.p%pl Ks
www.iTbulo .combpFMn

版面表:sboard
3g&v8^~&f^}(m:[#d0ITPUB个人空间]-tik!js%j
boardnum int unique, // 版面的标识(需要吗?)ITPUB个人空间.ooNLd;P"xe2Kv:h
boardid char[20], // 版面的英文名ITPUB个人空间9LuETF!dO+q
boardname varchar[100], // 版面的中文名ITPUB个人空间 hT4eXRX
boardclass char[20], // 版面所属分类
;E]yzG*im$nY0boardsysop varchar[100], // 斑竹名单
f+? eGR0boardposts int, // 版面的文章数
UhL4v(|6e8y0boardlevel int, // 版面的读写权限ITPUB个人空间 dxI"mX:`Ru|6c
indextable char[20], // 版面对应的索引表的名称:aboardid?ITPUB个人空间O9YH{d
texttable char[20], // 版面对应的文章表名称: bboardid?ITPUB个人空间,R%Ad kY2v$qlRA
ITPUB个人空间M,NQHCD5ek/TY
// 最后两项有没有必要出现,是否可以作为必然对应关系,还是允许ITPUB个人空间m!D H;s v
// 出现更大的灵活性?另外版面的大小写问题是否可以直接默认
1@s y7k$b0// 只开头字母大写,ITPUB个人空间aQ%T5o4ut)`irB!y

Il:WO:v$Z6oG0特殊分类版面表:snewboard, sstarboardITPUB个人空间1f:`6Y||ucB0\^6u
ITPUB个人空间 d4YO)HkQ!B2C_
boardid char[20], // 版面的idITPUB个人空间^?SkLfG6j/^
// 这样的表有必要吗?ITPUB个人空间`3B[)i5g HMV
ITPUB个人空间9B5XigOdmg
版面索引表:acampus,alinux,afootball。。。。。。
%K$I&C"V-hp S0
!bM!P.`%FL`0id int, // 文章序数,要手动调整????
?&zy O!J:f0v0{'I:rim0mark char[1], // 文章标记,m,g,b,d。。。。ITPUB个人空间#_%M dZF
title varchar[100], // 文章标题
!m&G.P'kj0writer char[20], // 文章作者idITPUB个人空间-@x2mR:{U-G4b
posttime time, // 发表时间ITPUB个人空间/lB*XZ6b @;x5R}0T A|
textnum longint, // 对应的编号???不调整ITPUB个人空间K/U\;G BM*X9z/[
ITPUB个人空间#z NE+Rf6j
版面文章表ITPUB个人空间]+tC IGD&HB%SP

o Jjo'b0textnum longint, // 文章编号?
WkO_)R R{0textword text, // 文章内容?ITPUB个人空间 `@-H|GRU4b1G
ITPUB个人空间{B3{z'?Sg)V
// 有必要将索引和文章内容分开吗?从效率上看,况且lazy flushITPUB个人空间vt*^aB)y!h,]
// 是必然的。删除也是先做个标记。
.b v})m4U0ITPUB个人空间!TyKMr r8^Jev
// 用户中的版面文章是否未读的数据比较繁,是否应该再建一堆的表
VHA }.Mugm0// 才能实现呢?
6Q+Sr2cx Z5i0V0// 投票功能暂不考虑。。。。www.iTbulo .combpFMn


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-07-07  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 10068
  • 日志数: 2718
  • 图片数: 1
  • 建立时间: 2008-03-20
  • 更新时间: 2008-06-01

RSS订阅

Open Toolbar