有关BBS无限级版块,好友系统的数据库设计交流贴

liuyiy 2012-04-21

我的基本主题意见就是讲所对应的字段用array()存储 可一维,可二维,将强大的数组联系到数据库中,

限级版块,版主,用户,管理

先把id=1的设为不问本站点的主版块,如想要往本站内部插入子版块,便添加至表中,将添加完成的id写入父版块对应的include字段,

如果是终端的话就将1写入对应的end字段

字段

类型

属性

默认

备注

Id

Int

Key自增

版块id

Name

Char(20)

版块name

Include

Array()

0

本版块对应的子版块

End

Int

0

是否为终端

Master

Array()

对应版主id数组

Notice

Char()

公告

Display

Int

1

是否显示

例子如下:

Id

Name

Include

end

Master版主

Nitice

Display

1

cs乐知

Array(2,3,4)

0(默认)

对应的版主

该板块对应的

1(默认)

2

狼言事态

Null(默认)

langyan

公告

1

3

我爱生活

array(5,6,7)

0

1

4

我来写算法

Array(算法分类)

0

1

5

生活推荐

Null

0

1

6

亚洲

Array(….)

asia

1

7

欧美

。。。

eru

1

i.插入版块流程:

递进式选择需要插入的版块的位置,最后确定位置后,输入名字,浏览权限,(推荐数目,)最后将最近的上一层name传过去,将新建的版块插入数据库,(name唯一),

再selectidfrombankuaiwherename=-$name(刚建的版块name)

选出id以后将id修改到上一层的id的include的array中,过程如下:

1)确定添加的位置,并记录父版块内容,查找字段id

2)添加新的版块到表中,记录name,查出id,并记录

3)查找到上一版块的include的数组,读出,

4)将新添加的id插入到数组中,

5)将新的数组修改到上一层的id的include字段

ii.删除:

在显示的时候先查找版块的位置,找出include的数组的东西,anddisplay==1

而删除就是将display该为0;

iii.修改

1)名字

根据name进行查找

2)修改所属版块:

a)找到name所对应的id,将display改为0;将查找到的id对应的table复制到一个新的表,

b)插入新的一行,后续插入到新的父版块,如{I}插入。

iv.版主功能:由系统上级总管理员对不同的子版块include内的array()内的内容或者子版块的子版块进行版主设置,级别高的版主能够将用户设置为子版块的版主。

v.Notice公告栏:对应的notice表的id

对于好友管理的设计

用户表

字段

类型

属性

默认

备注

Id

Int

Key自增

用户注册id

Name

Char(16)

NotNULL

用户名

Pwd

Char(32)

NotNULL

密码md5后的值

Real

Char(12)

NotNULL

密码的实际值

Score

Int

NotNULL

0

用户积分

Leval

Int

NotNULL

0

用户的等级权限

Masterof

管理对应版块的id

State

Int

0

0离线1在线2隐身

Friend

Array

Notnull

0

存储用户的好友

对于好友系统,将分组作为第一维,再将对应组内的id放在其二维数组里面

更多信息请查看 java进阶网 http://www.javady.com

相关推荐